Swift - TabBarController - 在运行时决定segue

时间:2017-06-24 22:52:36

标签: swift xcode uinavigationcontroller uitabbarcontroller segue

我有以下情况:

在我的TabBarController中,我有多个标签,一切正常,但是:

一个特定标签的目的地是动态的。

如果某个条件匹配,则此特定选项卡应打开NavigationViewController。

如果其他条件匹配,则此特定选项卡应打开ViewController。

有没有内置的解决方案?

如何在运行时修改选项卡的目标?

问候和感谢

3 个答案:

答案 0 :(得分:0)

很久很久以前,在遥远的星系...... Segues甚至不存在。所以是的

UITabBarController有一个setter,您可以在其中传递您希望它处理的新视图控制器。您将无法通过这种方式决定点击时的显示,但是您可以在条件发生变化时更改控制器。

init(contentsOf url: URL) throws

但是,如果你需要决定选项卡是否被点击...你可以让你的标签控制器指向一个基本上是空的控制器,并使用该控制器的视图控制器包含来获得2个选项,并且其中一个隐藏。非常可靠的故事板,支持代码很少。我想我更喜欢这个选项。

答案 1 :(得分:0)

如果您希望继续使用Segues,那么您可以根据某些condition变量的状态执行特定的Segue,如下所示:

func presentAppropriateView() {
    if condition {
        performSegue(withIdentifier: "ToNavBar", sender: self)
    } else {
        performSegue(withIdentifier: "ToVC", sender: self)
    }
}

答案 2 :(得分:0)

在运行时写一个你想要在某些条件下执行的委托方法并调用 [self.tabBarController setSelectedIndex:0];

哪里可以选择索引