Storyboard segue 崩溃和 UINavigationController 最佳实践

Posted

技术标签:

【中文标题】Storyboard segue 崩溃和 UINavigationController 最佳实践【英文标题】:Storyboard segue crash and UINavigationController best practices 【发布时间】:2013-11-28 10:18:15 【问题描述】:

我正在使用基于故事板的设置,并且有一个 UINavigationController 可以跟踪一组 UIViewControllers...我有一个主 UIViewController 作为“主屏幕”,所有活动和任务都从那里分支.

就目前的情况而言,在某些情况下,我会弹出到根视图控制器,而在某些情况下,我实际上有一个指向该根“主屏幕”视图控制器的 segue。

当我回到主视图控制器然后再次离开那里时,我看到一些崩溃弹出......错误是

Could not find a navigation controller for segue 'xxx'. Push segues can only be used when the source controller is managed by an instance of UINavigationController.

...这可能是因为我的故事板的周期性而发生的吗?我可以让这些 segues 回到主视图控制器吗?这会创建主视图控制器的另一个实例吗?我应该总是弹出到根目录吗?

【问题讨论】:

我希望这能帮助你解决你的问题 [Unwind Segue][1] [1]: ***.com/questions/12561735/… 【参考方案1】:

不,不能“返回”到任何带有 segue(展开除外)的控制器,因为它确实会创建一个新实例。如果你想返回,你必须在基于导航控制器的应用程序中使用 unwind segue 或 popToRootViewController(或任何其他弹出方法)。

【讨论】:

感谢您的澄清。回想起来,这似乎很明显,但无论出于何种原因,我已经通过这些不良做法走到了这一步...... :-)

以上是关于Storyboard segue 崩溃和 UINavigationController 最佳实践的主要内容,如果未能解决你的问题,请参考以下文章

Storyboard 中的 Modal 和 Push segue 有啥区别?

无法使用自定义 segue 和 Storyboard 调整 UIViewController 的大小

启动屏幕可能没有触发 segue。 (LaunchScreen.storyboard)

使用 Storyboard 推动 segue

如何在没有 segue 和 storyboard 编程的情况下传递数据?

在 Xcode7 - beta 5 和 storyboard 中展开 segue