当segue到另一个ViewController时,TabBar嵌入式NavigationController栏会消失

时间:2017-11-26 19:41:28

标签: ios swift xcode uinavigationcontroller uitabbarcontroller

我有一个连接到3个UINavigationControllers的UITabBarController。其中每个都有一个UIViewController作为根视图控制器。当我单击其中一个ViewControllers(VC1)中的按钮时,我希望它转到新的ViewController(VC2)。很简单。

在运行期间,当发生segue并出现VC2时,导航栏将消失。

导航栏出现在storyBoard /界面构建器中,segue的类型为:present(推送)。

VC1中的代码:

@IBAction func create_clicked(_ sender: Any) {
    performSegue(withIdentifier: "segueIdentifier", sender: self)
}

了解如何实例化UITabBarController tabBar 可能会有所帮助:

func login() {

    let storyBoard = UIStoryBoard(name: "Main", bundle: nil)
    let tabBar = storyBoard.instantiateViewController(withIdentifier: "tabBar")

    window?.rootViewController = tabBar
}

请帮忙。

1 个答案:

答案 0 :(得分:3)

经过大量的实验,我们确定即使Interface Builder 这是一个Show(Push)segue,即使我们在导航控制器中开始,  它表现为现代模式。

所以我们使用Interface Builder中的弹出菜单,从Show(Push)到普通Push,更改了segue类型,即使这已被弃用 - 并且界面正常工作。

然后我们将其更改回Show(Push)并继续正常工作。问题解决了!

我怀疑故事板在某种程度上被破坏了。显然,Interface Builder不应该对你说这是什么类型的骗局,但基本上,这就是它似乎一直在做的事情。

编辑显然,问题是通过制作Show Detail segue并将其更改为Show来引起的。当你这样做时,它仍然是一个Show Detail segue,在这个上下文中表现为一个模态表示。这是一个Xcode错误!我报告了,Apple现在说这将在Xcode 9.3中修复。