在应用程序的所有视图控制器上显示标签栏
Show tab bar on all view controllers of application
我有问题,我在选项卡栏控制器上有 2 个视图控制器。这两个控制器都显示选项卡。但是,当我从 View controller 1 向 View controller 3 推送 segue 时。View controller 3 不显示选项卡栏。
我想在我的应用程序的所有控制器上显示选项卡。
你应该意识到你的观点结构。
现在,您首先有一个 NavigationController,它的根ViewController 是一个 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)
然后在你的Controller1中运行
self.navigationController.pushViewController
会好的。
更改故事板设计:
将 TabBar 视图控制器设置为初始 ViewController
将您的 UINavigationViewController 设置为每个选项卡的根视图控制器
毕竟你的Design结构会像mention Image
您的问题存在是因为您的 UITabViewController
嵌入在您初始化为初始控制器的导航堆栈中。
您必须重新构建,以便您的选项卡栏控制器选项卡打开到新的导航堆栈。
- 删除第一个
UINavigationController
,你不需要它(如果你想要它不要使用推送转场,使用模态转场,然后你就不会再引用那个 UINavigationController
的 viewController 堆栈来自
在你的 UITabViewController
里面
- 将前
UIViewControllers
中的每一个嵌入到您的
UITabViewController
在单独的 UINavigationController
. 里面
现在您可以在 UITabViewController's
选项卡中推送 segue
要将视图控制器添加到选项卡栏控制器的视图控制器数组,请从选项卡栏控制器拖动到该视图控制器,同时按住 Control 键。 Select 关系 Segue > 从出现的菜单中查看控制器。
我有问题,我在选项卡栏控制器上有 2 个视图控制器。这两个控制器都显示选项卡。但是,当我从 View controller 1 向 View controller 3 推送 segue 时。View controller 3 不显示选项卡栏。
我想在我的应用程序的所有控制器上显示选项卡。
你应该意识到你的观点结构。
现在,您首先有一个 NavigationController,它的根ViewController 是一个 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)
然后在你的Controller1中运行
self.navigationController.pushViewController
会好的。
更改故事板设计:
将 TabBar 视图控制器设置为初始 ViewController
将您的 UINavigationViewController 设置为每个选项卡的根视图控制器
毕竟你的Design结构会像mention Image
您的问题存在是因为您的 UITabViewController
嵌入在您初始化为初始控制器的导航堆栈中。
您必须重新构建,以便您的选项卡栏控制器选项卡打开到新的导航堆栈。
- 删除第一个
UINavigationController
,你不需要它(如果你想要它不要使用推送转场,使用模态转场,然后你就不会再引用那个UINavigationController
的 viewController 堆栈来自 在你的UITabViewController
里面
- 将前
UIViewControllers
中的每一个嵌入到您的UITabViewController
在单独的UINavigationController
. 里面
现在您可以在 UITabViewController's
选项卡中推送 segue
要将视图控制器添加到选项卡栏控制器的视图控制器数组,请从选项卡栏控制器拖动到该视图控制器,同时按住 Control 键。 Select 关系 Segue > 从出现的菜单中查看控制器。