UITabBarController的使用
更新记录
时间 | 版本修改 |
---|---|
2020年4月19日 | 初版 |
前言
- iOS中许多app的主界面,都是由一个tabBar,控制着多个主界面的。比如微信中,主界面有4个TabBarItem,分别对应“聊天”,“通讯录”,“发现”,“我的”。
- 对于iOS的app,很大可能app的rootViewController就是一个UITabBarController的自定义子类。
- 所以很有可能对于整个app的相关业务的处理,都会放在这样一个类中。
UITabBarController的相关知识点
UITabBarController
- 该类有一个属性:
@property(nullable, nonatomic,copy) NSArray<__kindof UIViewController *> *viewControllers;
- 初始化该属性后,UITabBarController中的tabBarItem即对应着这个VC数组。
- 默认选中数组的第0项。
- 点击过的tabBarItem,其对应的VC并不会被加载。
- 点击过的tabBarItem, 其对应的VC常驻内存,不会销毁。
UITabBarControllerItem
- UIViewController有一个分类,叫做
UIViewController (UITabBarControllerItem)
- 所以每一个继承于UIViewController(在iOS中也是潜规则了,自定义VC必定继承于UIViewController)的自定义VC类,都具备成为UITabBarController所持有的TabBarItem的能力。
- 还想起来《Objective-C基础教程》中提到的,分类的好处吗?其中之一就是可以把类的不同代码,分散到不同的范围中。在该例子中,就可以把UIViewController中关于Tab使用的代码,专门放到UITabBarController.h这个文件中进行管理。
- 后续就可以更改VC的UITabBarItem属性,来对该VC对应的tabBarItem的行为(比如tabBarItem的标题,icon等)
UITabBarControllerDelegate
- 主要用于自定义处理某些响应时间。例如选择tabBar事件。