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事件。
原文地址:https://www.cnblogs.com/HelloGreen/p/12735178.html