如何正确使用导航控制器来实现标签栏控制器

我正在使用Storyboard和Xcode 6.我的Storyboard中有下一个控制器和场景:

具有HomeViewController作为根的UINavigationControllerHomeViewController有一个button, Show (eg Push) UITabBarControllerUITabBarController有4个UIViewControllers

但是我的问题是,在显示UITabBarController后,在4个UIViewControllers中没有导航栏。 但我认为,如果我Show (eg Push) UITabBarController那么它应该embedded导航控制器,在故事板中的初始控制器。 我对吗? 如果是这样,我怎么能安装导航栏在故事板,因为现在有推动标签栏中,我在故事板上看到的默认栏事件。 我已经select了UIViewController,并在身份检查器中设置模拟度量为Top属性的半透明导航栏,但我认为它应该自动添加到此控制器和标签栏,而无需额外的步骤。

或者我应该添加新的导航控制器的每个标签栏项目将有他们的根视图控制器?

主要问题,为什么我看不到导航栏使用显示(例如推)故事板。 例如,如果我添加导航控制器,然后设置为根标签栏控制器,然后Xcode自动添加顶部导航栏,但如果队列有一个额外的步骤像在我的情况HomeViewController顶部导航栏永远不会自动出现。

嗨,你需要embedded在自己的导航控制器的标签栏内的每个视图控制器。 所以stream程就像这样(HomeVCembedded在自己的NavController中):

  / --> `NavController` --> `ViewController1` | --> `NavController` --> `ViewController2` `HomeViewController`-->`TabBarController`|--> `NavController` --> `ViewController3` \--> `NavController` --> `ViewController4` 
  1. 转到编辑器 – > embedded – > 标签栏控制器 (或导航控制器)

如何正确嵌入

回答你的问题:

选项卡栏控制器界面的每个选项卡都与一个自定义(不同的[sic])视图控制器相关联。 当用户select特定选项卡时,选项卡栏控制器将显示相应视图控制器的根视图,replace以前的任何视图。

因此,选项卡的根视图控制器必须连接到导航控制器; 导航视图控制器必须下一个内联,以便View Controllerinheritance导航。 选项卡栏将视图切换为下一个内联。

这个文件将帮助提供更多关于它的信息。 https://developer.apple.com/documentation/uikit/uitabbarcontroller

在Swift 2中,Xcode 7有一个非常方便的function来添加一个UINavigationController:

  1. select用作UITabBarNavigationController的“选项卡”的UIViewController
  2. 在顶部的Xcode菜单上,select“编辑器” – >
  3. “embedded” – >
  4. “导航控制器”

    在这里输入图像描述

如果你想有这样的事情:

TabBarController -> Navigation Controller -> View Controller with a Table View -> and from the TableView a MasterDetailView例如:

我有问题,MasterDetailView中没有导航(与TableView的ViewController没有后退button)。

解决方法是:

将TableView和MasterDetailView之间的Segue设置为: Kind:Push(已弃用)

运行你的应用程序…希望你会看到后退button…改变种类Show (eg Push) ,再次运行 – >它应该工作。