如何正确实现带导航控制器的标签栏控制器

Mat*_*der 46 uitabbarcontroller uinavigationcontroller ios uistoryboard xcode6

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

UINavigationController具有HomeViewController作为根.HomeViewController有一个按钮Show (e.g. Push) UITabBarController.UITabBarController有4 UIViewControllers.

但我的问题是,在我显示之后UITabBarController,4中没有导航栏UIViewControllers.但我认为,如果我Show (e.g. Push) UITabBarController那么它应该有嵌入式导航控制器,它是故事板中的初始控制器.我对吗?如果是这样,我如何在Storyboard中设置导航栏,因为我在故事板上看到的推送标签栏中现在有默认栏事件.我选择了UIViewController并将身份检查器中的模拟指标设置为Top属性的Translucent Navigation bar,但我认为它应该自动添加到此控制器和标签栏而无需其他步骤.

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

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

App*_*Guy 143

您好,您需要嵌入自己的导航控制器中的标签栏内的每个视图控制器.所以流程是这样的(HomeVC嵌入在它自己的NavController中):

                                         / --> `NavController` --> `ViewController1`
                                         | --> `NavController` --> `ViewController2`
`HomeViewController`-->`TabBarController`|--> `NavController` --> `ViewController3`
                                         \--> `NavController` --> `ViewController4`
Run Code Online (Sandbox Code Playgroud)
  1. 转到编辑器 - > 嵌入 - > 选项卡栏控制器(或导航控制器)

如何正确嵌入

回答你的问题:

标签栏控制器界面的每个标签与自定义(不同的[sic])视图控制器相关联.当用户选择特定选项卡时,选项卡栏控制器将显示相应视图控制器的根视图,替换以前的任何视图.

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

本文档将帮助您概述有关它的更多信息.https://developer.apple.com/documentation/uikit/uitabbarcontroller


Bri*_*den 18

在Swift 2中,Xcode 7有一个非常方便的功能,用于添加UINavigationController:

  1. 选择正在用作"选项卡"的UIViewController UITabBarNavigationController
  2. 在顶部的Xcode菜单上,选择"Editor" - >
  3. "嵌入" - >
  4. "导航控制器"

    在此输入图像描述

  • 实际上没有必要使用Xcode 7或使用Swift,因为这个功能从一开始就在Xcode中.:) (7认同)