在应用程序的所有视图控制器上显示选项卡栏

时间:2016-05-23 08:14:38

标签: ios objective-c iphone swift ios8

我遇到问题,标签栏控制器上有2个视图控制器。这两个控制器都显示标签。但是当我从View控制器1到View控制器3进行推送时,视图控制器3没有显示标签栏。

我想在我的应用程序的所有控制器上显示选项卡。 my situation

4 个答案:

答案 0 :(得分:7)

更改故事板设计:

  • 将TabBar View Controller设置为初始ViewController

  • 将UINavigationViewController设置为每个选项卡的根视图控制器

  • 毕竟,您的设计结构看起来就像提到图像

enter image description here

答案 1 :(得分:1)

您的问题存在是因为您的UITabViewController已嵌入您初始化为初始控制器的导航堆栈中。

您必须重新构建内容,以便标签栏控制器选项卡打开到新的导航堆栈。

  • 删除第一个UINavigationController,你不需要它(如果你不想使用push segue,请使用模式segue,然后你就不会引用它回到那个UINavigationController的viewController堆栈 在UITabViewController
  • 将第一个UIViewControllers中的每一个嵌入您的 UITabViewController位于单独的UINavigationController

现在,您可以在UITabViewController's标签

中推送segue

答案 2 :(得分:0)

你应该意识到你的观点结构。

现在,您首先拥有一个NavigationController,其rootViewController是一个Tab BarController。

NavigationController[0] = TabBarController

你的TabBarController有2个ViewController(控制器1和控制器2)

NavigationController[0] = TabBarController

然后它包括2个控制器,如

TabBarController[0] = Controller 1

TabBarController[1] = Controller 2

致电

self.navigationController.pushViewController

这意味着NavigationController推送到Controller 3, 所以控制器3不会显示标签栏,因为它不在TabBarController中。

如果你想推到控制器3并仍然有标签栏, 你可以在Controller 1中插入一个容器(或插入一个View), 并像这样创建一个NavigationController

let nav = NavigationController(rootViewController: yourController1)
self.yourViewInsertedInController1.addSubview(nav.view)

然后在yourController1中运行

self.navigationController.pushViewController

这是对的。

答案 3 :(得分:-1)

要将视图控制器添加到选项卡栏控制器的视图控制器阵列,请从标签栏控制器拖动到该视图控制器,同时按住Control键。选择关系Segue>从出现的菜单中查看控制器。