【问题标题】:Meaning of Warning "while a presentation is in progress!"警告“在演示过程中!”的含义
【发布时间】:2013-01-05 08:31:53
【问题描述】:

当我将 Instagram 集成到我的项目中时。我从UIImagePickerController 收到image,之后我想将其发送到Instagram 但是当我通过UIDocumentInteractionController 代表将image 发送到Instagram 时方法presentOptionsMenuFromRect:inView: animated:这样

[documentInteractionController presentOptionsMenuFromRect:CGRectZero inView:self.view animated:YES];

警告出现警告:尝试在演示过程中演示 <_uidocumentactivityviewcontroller:>!
应用程序没有崩溃。但我没有得到问题。为什么会出现这个警告以及它的含义。我在互联网上搜索并阅读了有关此的问题,但没有得到任何答案。帮帮我!!

【问题讨论】:

  • 简而言之:您正在打开下一个视图在前一个视图的关闭动画期间。这个令人气愤的问题,就是这么简单。只需使用下面 John 的代码来绝对确保结束动画在下一个开始之前完成。

标签: iphone objective-c uinavigationcontroller


【解决方案1】:
// Breaks
[viewController1 dismissViewControllerAnimated:YES completion:NULL];
[self presentViewController:viewController2 animated:YES completion:NULL];

// Does not break
[viewController1 dismissViewControllerAnimated:YES completion:^{
    [self presentViewController:viewController2 animated:YES completion:NULL];
}];

上述代码的 Swift 3 版本如下所示:

// Breaks
viewController1.dismiss(animated: true)
present(viewController2, animated: true)

// Does not break
viewController1.dismiss(animated: true) {
    present(viewController2, animated: true)
}

请注意上面第二个示例中完成处理程序的使用。
它仅在 viewController1 完全关闭后显示 viewController2

【讨论】:

  • 这应该是被接受的答案 plz,非常感谢@John 先生
  • 你能提供这个的 Swift 3 版本吗?
  • 太棒了,这救了我
【解决方案2】:

对于那些需要/想要 swift 3 版本的人,这里是

viewController1.dismiss(animated: true, completion: {
    self.present(self.viewController1, animated: true)
})

viewController1 是您要呈现的视图控制器。

【讨论】:

    【解决方案3】:

    试试..

        double delayInSeconds = 1.0;
        dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(delayInSeconds * NSEC_PER_SEC));
        dispatch_after(popTime, dispatch_get_main_queue(), ^(void){
    
            [self performSegueWithIdentifier:@"Identifier" sender:self];
    
        });
    

    【讨论】:

      【解决方案4】:

      我收到此消息是因为我复制粘贴了一个已发送附加事件的按钮,并且我继续创建另一个连接,因为新按钮应该打开新视图。

      所以从技术上讲,我试图同时打开 2 个视图。

      【讨论】:

        【解决方案5】:

        正如之前所说,这意味着您正在尝试同时呈现 2 个模态窗口或弹出框。但就我而言,当我收到此消息时,我没有看到任何模态窗口或弹出窗口。

        在我的案例中出现错误的原因如下。当我第一次调用弹出窗口显示时,这是另一个阻止弹出窗口显示的错误,但它以某种方式继续处于“呈现”状态。以下所有显示弹出框的尝试都失败了,并出现运行时错误“在演示过程中!”。

        因此,如果您遇到同样的情况,请查看日志并尝试查找以 *** WebKit discarded an uncaught exception in the... 开头的第一个错误。

        希望它能节省一些人的时间。

        【讨论】:

          【解决方案6】:

          如果您有(例如)一个连接到 IBAction 以呈现 ViewController 的 UIButton,并且还在 Storyboard 中创建从按钮到目标 ViewController 的 segue,也会发生这种情况。

          当我转移一些交互时忘记从 UIButton 删除 IBAction 连接时发生了这种情况。

          删除 IBAction 连接或 segue 将解决它。

          【讨论】:

            【解决方案7】:

            这意味着您同时呈现 2 个 ViewController。在第一次演示完成后致电您的代表。

            【讨论】:

              【解决方案8】:

              表示您正在展示或关闭UIImagePickerController 并尝试展示UIDocumentInteractionController,而第一次展示或关闭尚未完成。

              【讨论】:

              • 你能告诉我这个问题的正确解决方案吗?我只能在UIImagepicker的委托方法didFinishPickingImage中调用当前的UIDocumentInteractionController
              • 是的,您应该在 didFinishPickingImage 方法中呈现它。之后 UIImagePicker 将被解除
              猜你喜欢
              • 2015-12-04
              • 2013-10-15
              • 1970-01-01
              • 2012-12-03
              • 2012-11-18
              • 2014-04-24
              • 2014-06-12
              • 1970-01-01
              • 2013-11-03
              相关资源
              最近更新 更多