今天学习的是另外一种控制器:UITabBarViewController
同样是控制一组控制器的,以后一般我们用他来控制UINavigationController,来控制其他的视图控制器.
1.初始化
创建一个UITabBarController的子类
把UITabBarController 作为window的根视图控制器 显示出来
RootTabBarViewController *rootVC = [[RootTabBarViewController alloc] init];
// 设置成window的根视图控制器
self.window.rootViewController = rootVC;
2.设置标题(是分别设置控制的UINavigationController,这里都以一个为例)
oneVC.tabBarItem.title = @"首页";
3.设置图片以及设置图片的表现方式(如原有颜色等)
UIImageRenderingModeAlwaysOriginal (绘制出原始图片,图片颜色等不变默认显示轮廓和背景色)
oneVC.tabBarItem.image = [[UIImage imageNamed:@"82-dogpaw"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
4.设置选中的图片
oneVC.tabBarItem.selectedImage = [[UIImage imageNamed:@"28-star"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
5.设置tabBarItem上的红色提示按钮
oneVC.tabBarItem.badgeValue = @"99+";
6.显示到TabBarController上面(需要添加到 viewController的数组中)
self.viewControllers = @[oneNav, twoNav, threeNav, fourNav, fiveNav, sixNav];
7.设置bar的颜色
self.tabBar.barTintColor = [UIColor blueColor];
8.设置bar填充色
self.tabBar.tintColor = [UIColor redColor];
9.设置bar的背景图片
self.tabBar.backgroundImage = [UIImage imageNamed:@"tabBar"];
10.设置默认选中
self.selectedIndex = 1;
UITabBarViewController的代理方法:
1.可以指定哪个控制器不让点击
- (BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController {
// 先取出 不让点击的控制器
UINavigationController *nav = self.viewControllers[1];
// 如果选中的控制器是你不想让用户点击的
// 那么返回NO
if (viewController == nav) {
return NO;
} else {
return YES;
}
}
2.选中页面时触发的方法
- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController {
// 打印选中的索引
NSLog(@"%ld",self.selectedIndex);
// 选中时 把红色提示去除
viewController.tabBarItem.badgeValue = nil;
}
3.控制more的代理方法(有三个使用的方法)
- (void)tabBarController:(UITabBarController *)tabBarController willBeginCustomizingViewControllers:(NSArray<__kindof UIViewController *> *)viewControllers {
NSLog(@"将要开始编辑more");
}
- (void)tabBarController:(UITabBarController *)tabBarController willEndCustomizingViewControllers:(NSArray<__kindof UIViewController *> *)viewControllers changed:(BOOL)changed {
NSLog(@"将要结束编辑more");
}
- (void)tabBarController:(UITabBarController *)tabBarController didEndCustomizingViewControllers:(NSArray<__kindof UIViewController *> *)viewControllers changed:(BOOL)changed {
NSLog(@"已经结束编辑");
}