UITabBarController 和 UINavigationController 的详解

首先得搞清这两个控制器之间的层级关系,我们直接看官网给的图,如下所示:

从这张图可以看到:最右边的Assembled views是呈现给用户的界面,它左边的Window是最底层的窗口,重点来了,再往左,是Tab bar view,Tab bar view的上方是Navigation view,最后是用户定制的视图。

看完这个,代码就应该很好写了,我们需要把Navigation view加到 Tab bar view的内容上去,Tab bar view再加到Window上去。就是Window套UITabBarController,UITabBarController套UINavigationController, UINavigationController套UIViewController。

UIViewControlleller  的tabBarItem的详情里面最后一句话:

The default value is a tab bar item that displays the view controller‘€™s title.

标签栏元素默认显示的是 视图控制器的标题。

navigationItem 里面同样有这么一句话

The default behavior is to create a navigation item that displays the view controller‘€™s title.

默认创建一个导航栏元素显示 视图控制器的标题

1.因此 activetyLC.title = @"活动"; 同时给导航栏和标签栏赋值  就有迹可循了。

2. 若 我们的导航栏标题 和标签栏 标题显示的不一样的时候如何赋值呢。

UIViewController是UINavigationController和 UITabBarController的父类

我们看下UIViewController里面的navigationItem 和 tabBarItem 是如何说明的

The tab bar item that represents the view controller when added to a tab bar controller.

标签栏元素 代表 控制器被  添加到的标签栏控制器 的标签栏元素 (父标签栏 标签元素)

The navigation item used to represent the view controller in a parent‘€™s navigation bar. (read-only)

导航栏元素代表着 父视图控制器的导航栏 元素 (父 导航栏 导航元素)

按照上面我所说的层次关系,在 最上层的 UIViewController

这样写:

self.navigationItem.title = @"活动";

self.tabBarItem.title = @"活动123";  会如何??

结果是: 导航栏 标题 显示  “活动” ,标签栏为 “空”。

若我们给导航栏的 tabBarItem 赋值。

activetyNC.tabBarItem.title = @"活动";

则 标签栏 正常显示 “活动”。

结合上面的 UIViewController里面对 导航元素和 标签元素的 介绍。 这样就明白了。

虽然

UINavigationController和 UITabBarController 都继承自 UIViewController,他们中都有 标签元素和导航元素属性,但是

对于:UIViewController navigationItem 和 tabBarItem 没有赋值,则为空,若父视图为导航栏控制器,navigationItem为 导航栏控制器的 navigationItem; 若父类为 标签控制器,则 tabBarItem为 标签控制器的 tabBarItem。

时间: 2024-11-05 03:43:45

UITabBarController 和 UINavigationController 的详解的相关文章

UINavigationController使用详解

有一阵子没有写随笔,感觉有点儿手生.一个多月以后终于又一次坐下来静下心写随笔,记录自己的学习笔记,也希望能够帮到大家. 废话少说回到正题,UINavigationController是IOS编程中比较常用的一种容器view controller,很多系统的控件(如UIImagePickerViewController)以及很多有名的APP中(如qq,系统相册等)都有 用到.说是使用详解,其实我只会介绍几个自认为比较重要或者容易放错的地方进行讲解,下面让我们挨个探探究竟: 首先上一张图(来自苹果官

UINavigationController详解

UINavigationController使用详解 有一阵子没有写随笔,感觉有点儿手生.一个多月以后终于又一次坐下来静下心写随笔,记录自己的学习笔记,也希望能够帮到大家. 废话少说回到正题,UINavigationController是IOS编程中比较常用的一种容器view controller,很多系统的控件(如UIImagePickerViewController)以及很多有名的APP中(如qq,系统相册等)都有用到.说是使用详解,其实我只会介绍几个自认为比较重要或者容易放错的地方进行讲解

iOS开发——控制器OC篇&UINavigationController&UITabBarController详解

UINavigationController&UITabBarController详解 一:UINavigationController 控制器的属性: UINavigationController以栈的形式保存子控制器 @property(nonatomic,copy) NSArray *viewControllers; @property(nonatomic,readonly) NSArray *childViewControllers; 导航控制器之间的跳转: 使用push方法能将某个控制

UITabBarController详解(介绍和设置)

[objc] view plaincopy - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; // Override point for customization af

UINavigationController详解(一)

@UINavigationControlle简介: 1.导航控制器,专门管理控制器的控制器. 2.采用栈的方式管理所有controller,每个controller管理各自的视图 @UINavigationControlle结构: 1.它是UIViewController的子类,因此它也由view属性 2.它的view包含3个子视图:navigationBar     contentView(不是属性)      toolbar 3.导航控制器使用这些对象实现导航界面,我们负责提供这些对象,进行

UITabBarController详解

UITabBarController详解 UITabBarController使用详解 UITabBarController是IOS中很常用的一个viewController,例如系统的闹钟程序,ipod程序等.UITabBarController通常作为整个程序的rootViewController,而且不能添加到别的container viewController中. 首先我们看一下它的view层级图: 一.手动创建UITabBarController 最常见的创建UITabBarContr

UINavigationController详解二(转)页面切换和SegmentedController

原文出自:http://blog.csdn.net/totogo2010/article/details/7682433,非常感谢. 1.RootView 跳到SecondView 首先我们需要新一个View.新建SecondView,按住Command键然后按N,弹出新建页面,我们新建SecondView 2.为Button 添加点击事件,实现跳转 在RootViewController.xib中和RootViewController.h文件建立连接 在RootViewController.m

UINavigationController详解三(转)ToolBar

原文出自:http://blog.csdn.net/totogo2010/article/details/7682641,特别感谢. 1.显示Toolbar  在RootViewController.m的- (void)viewDidLoad方法中添加代码,这样Toobar就显示出来了. [cpp] view plaincopy [self.navigationController  setToolbarHidden:NO animated:YES]; 2.在ToolBar上添加UIBarBut

iOS学习之UINavigationController详解与使用(二)页面切换和segmentedController

1.RootView 跳到SecondView 首先我们需要新一个View.新建SecondView,按住Command键然后按N,弹出新建页面,我们新建SecondView 2.为Button 添加点击事件,实现跳转 在RootViewController.xib中和RootViewController.h文件建立连接 在RootViewController.m中实现代码,alloc一个SecondViewController,用pushViewController到navigationCon