设置导航控制器的初始视图控制器

Posted

技术标签:

【中文标题】设置导航控制器的初始视图控制器【英文标题】:Set initial view controller of a navigation controller 【发布时间】:2016-05-27 19:22:15 【问题描述】:

我正在开发一个简单的 ios 应用来学习 Swift 和 iOS 编程。 我想知道在应用启动时呈现与导航控制器堆栈中的第一个不同的视图控制器的“最佳”方式是什么。

考虑这个故事板图: Tab Bar Controller 是初始视图控制器,“View Controller 1”在导航控制器内的应用启动时显示。由于“视图控制器 1”几乎不会被使用,我想显示“视图控制器 2”,而“返回”按钮指向“视图控制器 1”。为了节省时间和内存,我宁愿不加载“视图控制器 1”,因为我已经知道必须在第二个视图控制器中显示哪些数据。

这两个视图控制器实际上都是表视图控制器,并且在第一个 VC 中选择一个单元格会触发对第二个的 segue。然而,用户通常只需要看到第二个 VC,就好像选择了 TVC 1 的第一个单元格一样。

【问题讨论】:

【参考方案1】:

因为您希望能够“返回”到第一个 VC,所以需要将它放在第二个下面。我的建议是以编程方式将第一个 VC 设置为 appDelegate didFinishLaunchingWithOptions 中的根视图控制器,并立即 推送/呈现 VC2。这样,第一个 VC 将不会显示,因此可以省略加载/布局子视图的昂贵视图。

【讨论】:

以上是关于设置导航控制器的初始视图控制器的主要内容,如果未能解决你的问题,请参考以下文章

导航控制器查看非初始视图控制器的控制器

带表格视图的导航控制器

Swift:如果没有导航控制器,如何返回初始视图控制器

“是初始视图控制器”复选框发生了啥?

如何使用给定的根视图控制器和初始视图控制器实例化情节提要?

从导航控制器设置 rightBarButtonItem