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

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

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

【问题讨论】:

    标签: ios swift


    【解决方案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 中,您就拥有了控制器堆栈。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-15
    • 2016-04-16
    • 2018-01-13
    • 1970-01-01
    相关资源
    最近更新 更多