【问题标题】:How to segue across iOS Navigation Controller programmatically using Swift?如何使用 Swift 以编程方式跨越 iOS 导航控制器?
【发布时间】:2016-01-07 04:08:29
【问题描述】:

我的问题很像这两个:

除了我的 segue 是导航控制器,像这样:Main->NC->VC2>VC3。

当我使用第一个视图控制器中的按钮触发从 Main 到 VC2 的 segue 时,它​​工作正常。当代码调用 segue 时,它​​不起作用。我需要自动触发 segue 以响应 Main 中的代码确定的某些条件。

当按钮链接到 Main 中编码的函数时,它仍然有效。按钮功能定义中的代码运行并发生转场。当我尝试在函数代码中触发 segue 时,使用

performSegueWithIdentifier("showHelp", sender: nil)

或

performSegueWithIdentifier("showHelp", sender: self)

我收到一个错误:

警告:尝试在其视图不在窗口层次结构中的 上呈现 !

尽管有警告,但按钮会继续触发 segue,但不会在按钮的函数被其他代码调用时。

【问题讨论】:

  • 好的,看起来警告来自将按钮定义为 segue 触发器和编码按钮。我消除了segue触发器,留下了功能代码,警告消失了。但是现在的问题是,当从 Main 的 viewDidLoad 中调用按钮的函数时,没有执行 segue。我在那里有用于调试的打印语句和所有打印语句,但没有发生转场。没有警告或错误,什么都没有。
  • 在调用 segue 之前添加 1 秒延迟可以解决问题。我使用了stackoverflow.com/questions/27517632/…中提到的dispatch_after方法

标签: swift controller navigation segue


【解决方案1】:
self.navigationController?.pushViewController(nextViewController, animated: true)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-20
    • 2013-07-28
    • 1970-01-01
    • 1970-01-01
    • 2011-01-07
    相关资源
    最近更新 更多