UITabBarController以及辨析UITabBarController ,UIViewController,UITableViewController

-------------------------------------------------------------层级关系------------------------------------------

程序最开始在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.如果将UITabBarControllerUINavigationController位置调换一下是不合逻辑的,因此这种设计不可以用.会造成一下问题:

 1>改变导航条的文字(只有跟导航控制器直接相关联的界面才可以修改)

 2>界面切换的时候层级关系变化(比如DetailMessageTableViewController界面和UITabBarController界面层级相同)

 3>界面切换时标签栏消失(层级关系,后一个界面会将前一个界面覆盖掉)

 


------------------------------- ------------------------ ------UITabBar属性 ------------------------------------

  如果导航条显示的TitletabBar上显示的Title一样的话我们可以通过下面方式设置

    视图控制器.title = @"微信";

如果标签视图控制器改变默认选中项  先加载第一个界面,再加载默认选中的界面.    

    

   注意:对于视图控制器的根视图,即使视图控制器对象已经创建,根视图也不一定加载.(比如标签视图控制器中管理的视图控制器对象虽然创建,但是没有选中的视图并不会加载,只有在点击的时候才会加载,一旦加载成功,视图就永远存在,直到程序终止.)

    

   UITabBarController 通过Item进行视图层级切换的过程本质上是进行视图层级之间的切换.(各个Item是并列关系的,用户看一眼就能指代该程序大致有几个功能)


    DetailMessageTableViewController *detailM = [[DetailMessageTableViewController alloc]init];
    detailM.hidesBottomBarWhenPushed = YES;//该属性用来隐藏标签栏当进行push操作的时候.push到哪一个界面需要隐藏,就对该界面的这个属性做设置


UITabBarController管理UINavigationController的时候.我们想到上下标题显示不一致的时候必须在各个子界面的viewDidLoad修改导航控制器的标题,凡是牵扯到navigationitem的地方都是唯一的,如果是navigationcontroller的话位置就没这么死板了.因为Controller比较通用.

    



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值