一、分栏控制器的基本概念
1、UITabBarController和UINavigationController一样是用来管理试图控制器的
2、与导航控制器不同,tab控制器使用数组管理子试图控制器的,并且子试图之间是平等关系,导航控制器所管理的试图控制器之间上
练习:
1、创建若干个子视图控制器(它们是并列的关系)
2、创建一个数组,将已创建的子视图控制器,添加到数组中
3、创建UITabBarController实例
4、tabBarController.viewControllers = viewControllers;
5、添加到window的rootViewController中
二、分栏试图控制器的结构
1、有两部分组成
1)contentView:显示当前controller的view
2) tabBar(标签栏):负责切换显示controller, 高度为49
2、tabBar
1) 标签栏是唯一的,就好比导航控制器的导航栏
2) 设置分栏的颜色
barTintColor
3) 设置分栏的背景图片
backgroundImage
4)标签栏的显示与隐藏
hidden
5)设置导航控制器默认显示的控制器
selectedIndex
3、tabBarItem
1) 用来控制一组控制器的切换,类似选项卡,每个Tab控制一个试图控制器,点击哪个tab就显示对应的试图控制器,当前的试图控制器
2) 每个tabBarItem都可以设置title、image/selectedImages、badgeValue
3) 设置选中的颜色
分栏控制器.tabBar.tintColor
3) TabBar只能显示五个tab Item,如果超过五个则会自动生成个Morede 标签显示剩余的Tab,这些Tab可以通过编辑显示在UITabBar上
4) 自定义Item
[UITabBarItem alloc]initWithTitle: image: tag:
[UITabBarItem alloc]initWithTabBarSystemItem:tag:
3、支持国际化
1)找到plist文件
2)右键 add row
3)Localizations 默认就一个ENGLISH
4)在 添加一个 Item 1 Chinese (simplified)
练习:
1、初始化我们需要在tabBarController中显示的视图控制器
2、初始化UItabBarItem
3、在子视图控制器中添加UItabBarItem
4、我们将子视图控制器放入数组中
5、初始化tabBarcontroller
6、将数组放入tabBar控制器中,方法viewControllers
三、代理监听分栏控制器的切换
1、视图将要切换时调用,viewController为将要显示的控制器,如果返回的值为NO,则无法点击其它分栏了
- (BOOL)tabBarController:(UITabBarController *)tabBarControllershouldSelectViewController:(UIViewController *)viewController
2、视图已经切换后调用,viewController 是已经显示的控制器
- (void)tabBarController:(UITabBarController *)tabBarControllerdidSelectViewController:(UIViewController *)viewController
3、将要开始自定义item的顺序
- (void)tabBarController:(UITabBarController *)tabBarController willBeginCustomizingViewControllers:(NSArray<__kindof UIViewController *> *)viewControllers
4、将要结束自定义item的顺序
- (void)tabBarController:(UITabBarController *)tabBarController willEndCustomizingViewControllers:(NSArray<__kindof UIViewController *> *)viewControllers changed:(BOOL)changed
5、结束自定义item的顺序
- (void)tabBarController:(UITabBarController *)tabBarController didEndCustomizingViewControllers:(NSArray<__kindof UIViewController *> *)viewControllers changed:(BOOL)changed
四、集成分栏控制器和导航控制器
1、在Tab Bar控制器中某一个Tab中使用Navigation控制器,这是最常见的用法,我们将在下面具体讲解这个用法
2、在一个Navigation控制器控制下的某一个或某些控制器是Tab Bar控制器,这时对该Tab Bar控制器的压入和弹出方法和普通视图控制器一样
五、总结
1、UINavigationController、UITabBarController和UIViewController通常都是组合出现的,一定要熟练使用
2、UINavigationController、UITabBarController都是UIViewController的子类,管理的都是UIViewContrller
3、UINavigationController可以嵌套UITabBarController
4、UITabBarController可以嵌套UINavigationController