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

Posted

技术标签:

【中文标题】Swift:如果没有导航控制器,如何返回初始视图控制器【英文标题】:Swift: How to return to the initial view controller if there is no navigation controller 【发布时间】:2016-06-21 15:30:11 【问题描述】:

我一直在使用 XLPagerTabStrip 在我的视图控制器顶部有效地创建一个标签栏,其中显示了多个子视图控制器(来源:https://github.com/xmartlabs/XLPagerTabStrip)

让我们将这些子视图控制器称为 A1、B1 和 C1。在子视图控制器中是表视图,一旦被点击就会将所有子视图控制器转移到一个新的视图控制器(A2)。我希望能够从 A2 回到第一个视图控制器。我尝试将导航栏添加到所有子视图控制器并使用 navigationController?.popToRootViewControllerAnimated(true) 方法,但是当按下包含此代码的按钮时,没有任何反应。我还尝试在托管子视图控制器的初始视图控制器中嵌入导航控制器,但这也不起作用(不确定这是否是因为子视图控制器 A1、B1 和 C1 未连接到故事板)。

【问题讨论】:

【参考方案1】:

设置视图控制器的storyboard id。那么:

let vc = self.storyboard?.instantiateViewController(withIdentifier: "someID")

斯威夫特 2

self.showViewController(vc, sender: self)

斯威夫特 3

self.show(vc, sender: self)

【讨论】:

谢谢。我将代码的最后一行更改为 self.showViewController(vc, sender: self) 以使其正常工作,因此可能值得编辑您的答案:) 并不是最好的选择。 vc 是一个新实例,它不会神奇地重用以前的实例。将 A1、B1 和 C1 嵌入到 UINavigationController 中,您就拥有了控制器堆栈。

以上是关于Swift:如果没有导航控制器,如何返回初始视图控制器的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Swift 中加载初始视图控制器?

初始视图控制器标题更改为“返回”Swift

如何强制返回按钮转到第一个视图控制器(swift)

JSQ 消息视图控制器:在导航栏上添加“返回”按钮和图像,Swift

Swift 2:更改与选项卡栏控制器相关的视图上的导航标题

返回上一个 ViewController 不适用于 Swift 中的多个视图控制器