您的位置:首页 > 产品设计 > UI/UE

UITabBarController以及辨析UITabBarController ,UIViewController,UITableViewController

2015-08-10 19:08 381 查看
-------------------------------------------------------------层级关系------------------------------------------

程序最开始在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比较通用.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: