UINavigationBar UINavigationItem UIBarButtonItem UIToolBar 和 UITabBar UITabBarItem

这里写图片描述
通过上图,我们能够清楚的区分 UINavigationBar 、UINavigationItem、 UIBarButtonItem、UIToolBar 和 UITabBar 、UITabBarItem。

概述如下:
一、UINavigationItem
1> 获得方式
self.navigationItem // self是指控制器

2> 作用
可以用来设置当前控制器顶部导航栏的内容
// 设置导航栏中间的内容(该中间位置的控件为:UINavigationItemView)
self.navigationItem.title
self.navigationItem.titleView

二、UIBarButtonItem
1> 用在什么地方
// 设置导航栏左上角的内容
self.navigationItem.leftBarButtonItem
// 设置导航栏右上角的内容
self.navigationItem.rightBarButtonItem

备注:leftBarButtonItem 和 rightBarButtonItem 的真实类型是UIBarButtonItem,也相当于模型。(其对应的控件为:UINavigationButton)

2> 作用
相当于一个按钮(真实类型为:UINavigationButton)

三、UITabBarItem
1> 获得方式
self.tabBarItem // self是指控制器

2> 作用
可以用来设置当前控制器对应的选项卡标签的内容
// 标签的标题
self.tabBarItem.title
// 标签的图标
self.tabBarItem.image
// 标签的选中图标
self.tabBarItem.selectdImage

四、UINavigationBar
1. 导航控制器顶部的栏(UI控件)
2. UINavigationBar上面显示什么内容, 取决于当前控制器的navigationItem属性
3. UINavigationBar是view, navigationItem是model
4. 由navigationItem给UINavigationBar提供显示的数据

五、UITabBar
1. UITabBarController底部的选项卡条

六、UITabBarButton(苹果私有的类)
1. UITabBar底部的每一个标签
2. 每一个UITabBarButton里面显示什么内容,取决于当前控制器的tabBarItem属性
3. UITabBarButton是view, tabBarItem是model
4. 由tabBarItem给UITabBarButton提供显示的数据

提示:
(1)self.navigationItem 仅仅能代表导航栏的内容,它不是导航栏,因为它继承自NSObject,所以它不是控件,它仅仅是个模型。
(2)导航栏上显示什么内容,由navigationItem决定,所以从当前控制器切换到另一个控制器时,导航栏的内容就被换掉了,因为navigationItem换掉了,模型数据改了,控件中显示的数据也要跟着改。
(3)有时一个UINavigationBar(导航栏)可能会对应很多个navigationItem模型,具体要看你当前子模块中的控制器的情况,因为每一个控制器都有自己的一个navigationItem属性。而UINavigationBar只属于当前的子模块对应的导航控制器,所以只有一个导航栏。(navigationItem属性是UIViewController的属性)
(4)UITabBar中的每个UITabBarButton控件显示什么内容,由其对应的当前控制器的tabBarItem属性决定的。(tabBarItem属性是UIViewController的属性)。即tabBarItem是设置当前控制器对应的选项卡(即对应的UITabBarButton)中的内容(如 标签的标题、图标、选中图标)。
(5)怎样验证UITabBar 和 UINavigationBar中有哪些控件?
建议在 如下方法中,打印出他们的所有子控件,举例如下:

- (void)viewDidAppear:(BOOL)animated
{
    NSLog(@"%@", self.navigationBar.subviews);
    // 打印发现:UINavigationBar内部的控件有:UINavigationItemView 用于显示 UINavigationItem 中的数据。
    // UINavigationButton   用于显示 leftBarButtonItem 和 rightBarButtonItem 中的数据。
}

注意点:不要在viewDidload中打印验证,因为viewDidload是view刚刚创建完,此时UITabBar 和 UINavigationBar中可能没有内容,所以建议在viewDidAppear中打印,此时的view已经完全显示了,所以更稳妥。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值