UITabBarController以及辨析UITabBarController ,UIViewController,UITableViewController
2015-08-10 19:08
381 查看
-------------------------------------------------------------层级关系------------------------------------------
程序最开始在main函数生成,然后交给AppDelegate,然后交给Window,交给UItabBarController,在交给不同的导航控制器,由各个导航控制器管理各个视图控制器,视图控制器再继续剩下页面的跳转.
相同点:两个视图控制器都是多视图控制器,都是用来管理多个视图控制器的,只不过标签视图控制器管理的视图控制器之间是并列关系,导航控制器管理的视图控制器之间存在层级关系;
标签视图控制器和导航控制器均包含三层结构,最下边是视图控制器根视图,最上边是对应的标签栏或导航条,中间是contentView;所有的子视图都是加载其自带的View上面,但是当
标签视图控制器的标签栏和导航控制器的导航条一样都是可以进行编辑的.
UITabBarController,UINavigationController,UITabViewController(三大视图控制器)
UITabBarController管理UINavigationController.如果将UITabBarController和UINavigationController位置调换一下是不合逻辑的,因此这种设计不可以用.会造成一下问题:
1>改变导航条的文字(只有跟导航控制器直接相关联的界面才可以修改)
2>界面切换的时候层级关系变化(比如DetailMessageTableViewController界面和UITabBarController界面层级相同)
3>界面切换时标签栏消失(层级关系,后一个界面会将前一个界面覆盖掉)
-------------------------------------------------------------UITabBar属性------------------------------------
如果导航条显示的Title和tabBar上显示的Title一样的话我们可以通过下面方式设置
视图控制器.title =
@"微信";
如果标签视图控制器改变默认选中项 先加载第一个界面,再加载默认选中的界面.
注意:对于视图控制器的根视图,即使视图控制器对象已经创建,根视图也不一定加载.(比如标签视图控制器中管理的视图控制器对象虽然创建,但是没有选中的视图并不会加载,只有在点击的时候才会加载,一旦加载成功,视图就永远存在,直到程序终止.)
UITabBarController 通过Item进行视图层级切换的过程本质上是进行视图层级之间的切换.(各个Item是并列关系的,用户看一眼就能指代该程序大致有几个功能)
当UITabBarController管理UINavigationController的时候.我们想到上下标题显示不一致的时候必须在各个子界面的viewDidLoad修改导航控制器的标题,凡是牵扯到navigationitem的地方都是唯一的,如果是navigationcontroller的话位置就没这么死板了.因为Controller比较通用.
程序最开始在main函数生成,然后交给AppDelegate,然后交给Window,交给UItabBarController,在交给不同的导航控制器,由各个导航控制器管理各个视图控制器,视图控制器再继续剩下页面的跳转.
<span style="color: rgb(0, 132, 0); font-family: 'Songti SC'; font-size: 24px; background-color: rgb(255, 255, 255);">标签视图控制器和导航控制器的区别和联系</span><span style="color: rgb(0, 132, 0); font-size: 24px; font-family: Times;">:</span>
相同点:两个视图控制器都是多视图控制器,都是用来管理多个视图控制器的,只不过标签视图控制器管理的视图控制器之间是并列关系,导航控制器管理的视图控制器之间存在层级关系;
标签视图控制器和导航控制器均包含三层结构,最下边是视图控制器根视图,最上边是对应的标签栏或导航条,中间是contentView;所有的子视图都是加载其自带的View上面,但是当
标签视图控制器的标签栏和导航控制器的导航条一样都是可以进行编辑的.
UITabBarController,UINavigationController,UITabViewController(三大视图控制器)
UITabBarController管理UINavigationController.如果将UITabBarController和UINavigationController位置调换一下是不合逻辑的,因此这种设计不可以用.会造成一下问题:
1>改变导航条的文字(只有跟导航控制器直接相关联的界面才可以修改)
2>界面切换的时候层级关系变化(比如DetailMessageTableViewController界面和UITabBarController界面层级相同)
3>界面切换时标签栏消失(层级关系,后一个界面会将前一个界面覆盖掉)
-------------------------------------------------------------UITabBar属性------------------------------------
如果导航条显示的Title和tabBar上显示的Title一样的话我们可以通过下面方式设置
视图控制器.title =
@"微信";
如果标签视图控制器改变默认选中项 先加载第一个界面,再加载默认选中的界面.
注意:对于视图控制器的根视图,即使视图控制器对象已经创建,根视图也不一定加载.(比如标签视图控制器中管理的视图控制器对象虽然创建,但是没有选中的视图并不会加载,只有在点击的时候才会加载,一旦加载成功,视图就永远存在,直到程序终止.)
UITabBarController 通过Item进行视图层级切换的过程本质上是进行视图层级之间的切换.(各个Item是并列关系的,用户看一眼就能指代该程序大致有几个功能)
DetailMessageTableViewController *detailM = [[DetailMessageTableViewController alloc]init]; detailM.hidesBottomBarWhenPushed = YES;//该属性用来隐藏标签栏当进行push操作的时候.push到哪一个界面需要隐藏,就对该界面的这个属性做设置
当UITabBarController管理UINavigationController的时候.我们想到上下标题显示不一致的时候必须在各个子界面的viewDidLoad修改导航控制器的标题,凡是牵扯到navigationitem的地方都是唯一的,如果是navigationcontroller的话位置就没这么死板了.因为Controller比较通用.
相关文章推荐
- Xcode运行后报错: this class is not key value coding-compliant for the key的原因
- UITableViewCell的重用原理
- SAPUI5是什么?Fiori告诉我们将来UI开发用哪种技术?
- iOS 3D UI——CALayer的transform扩展解析
- HDU 1242 Rescue(BFS+优先队列)
- iOS UITableView行高自行扩展
- PAT 1017. Queueing at Bank (25)
- [] == ![]为什么是true
- iOS基本控制-UINavigationController 传统的价值观,代理传统价值观,正向传统价值观,反传统的价值观
- 【读书笔记】iOS-开发技巧-UILabel内容模糊的原因
- UIScrollView offset in UINavigationController
- 【读书笔记】iOS-开发技巧-UILabel内容模糊的原因
- iOS编程——通过UUID和KeyChain来代替Mac地址实现iOS设备的唯一标示(OC版)
- 【译】使用Espresso进行UI测试
- poj 1458 Common Subsequence(lcs模板)
- StringBuilder操作
- String、StringBuilder、StringBuffer
- C# SortedDictionary<TKey, TValue> 类
- 什么是优先级队列(priority queue)?
- iOS7下 UISearchBar设置ReturnKeyType