ios - 如何在以模态方式呈现的 View Controller 上执行当前模态序列?

标签 ios swift segue

这听起来可能有点奇怪。

我有一个 View Controller ,我们称之为 VC1,它以表单形式呈现。

当用户点击 VC1 中的按钮时,选择器会显示为操作表。当用户选择特定项目并点击操作表上的“完成”时,我想以模态方式呈现另一个 VC (VC2)。

让我向您展示操作表:

enter image description here

因此,我添加了一个连接 VC1UINavigationController 的“Present Modally”segue。此 UINavigationControllerVC2 作为其 Root View Controller 。该segue有一个“Form Sheet”演示和一个“Flip Horizo​​ntal”演示。

当我测试我的应用程序时,此警告出现在控制台中,并且根本不显示 View Controller :

Warning: Attempt to present on which is already presenting (null)

我当时想“这到底在说什么?VC1 怎么会呈现 null?”奇怪的是,它使用 null (这是 C# 和 Java 的术语)而不是 nil (Swift 使用的术语)。

我尝试了不同的过渡和演示。但出现同样的消息。我还尝试删除 UINavigationController 并直接呈现 VC2。这次,错误消息更改为:

Warning: Attempt to present on which is already presenting (null)

如何以模态方式呈现 VC2

最佳答案

经过一番尝试,我发现像这样调用 dispatch_after 并执行 segue 可以解决问题。但我不知道为什么。

dispatch_after(DISPATCH_TIME_NOW, dispatch_get_main_queue()) {
    self.performSegueWithIdentifier("someIdentifier", sender: self)
}

也许这是由于某种 Action 表魔法造成的。

关于ios - 如何在以模态方式呈现的 View Controller 上执行当前模态序列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38121360/

相关文章:

ios - UINavigationController 大小的 UIViewController.view 在 iOS 9 上变为 600x600,并且从未改变

swift - Xcode 10 - 实例将被立即释放,因为属性是 'weak'

ios - 在 UIPickerView Swift 中获取工作工具栏

swift - 使子方法中的 ‘return’ 影响其父方法中的其余范围

ios - 从 SKScene 到 UIViewController 的 Segue 不起作用

ios - 如何仅在iTunes中上传iPad版本?

ios - 用手指向上拖动 Child View Controller 并在点后锁定

ios - presentingViewController 不工作

Swift:在容器 View /NSView 中的 NSViewController 之间切换

swift - 在 ViewController 之间传输 TextField 数据