分栏控制器的概念:
分栏控制器是管理多个视图控制器的管理控制器,通过数组的方式管理多个平行关系的视图控制器,与导航控制器的区别在于:导航控制器管理的是有层级关系的控制器。
分栏控制器在同一界面最多显示5个控制器切换按钮,超过5个时会自动创建一个新的导航控制器来管理其余的控制器。
UITabBarltem:分栏按钮元素对象
badgeValue:分栏按钮提示信息
selectedIndex:分栏控制器选中的控制器索引
viewControllers:分栏控制器管理数组
selectedViewController:分栏控制器选中的控制器对象
1.创建VCFirst,VCSecond,VCThrid视图都继承于UIViewController
【VCFirst.m】
@interface VCFirst()
@end
@implementation VCFirst
-(void)viewDidLoad{
[super viewDidLoad];
//方法一
//创建一个分栏按钮,参数1:文字,参数2:显示图片,参数3:设置按钮的tag值
/*UITabBarItem* tabBarItem=[[UITabBarItem alloc] initWithTitle:@"" image:nil tag:101];
self.tabBarItem=tabBarItem;*/
方法二
//根据系统风格创建分栏按钮,参数1:系统风格设定
UITabBarItem* tabBarItem=[[UITabBarItem alloc]initWithTabBarSystemItem:UITabBarSystemItemContacts tag:101];
//按钮右上角的提示信息,通常用来提示未读的信息
tabBarItem.badgeValue=@"22";
self.tabBarItem=tabBarItem;
}
【AppDelegate.h】
#Import"AppDelegate.h"
#import"VCFirst.h"
#import"VCSecond.h"
#import"VCThird.h"
@interface AppDelegate()
@end
@implementation AppDelegate
-(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{
//创建Window
self.window=[[UIWindow alloc]initWithFrame:[UIScreen mainScreen].bounds];
//显示window
[self.wind makeKeyAndVisible];
VCFirst* vcFirst=[[VCFirst allock]init];
vcFirst.view.backgroundcolor=[[UIColor blueColor];
//创建视图控制器二
VCSecond* vcSecond=[[VCSecond alloc]init];
vcSecond.view.backgroundColor=[UIColor yellowColor];
VCThird* vcThird=[[VCThird alloc]init];
vcThird.view.backgroundColor=[UIColor orangeColor];
vcFirst.title=@"视图1";
vcSecond.title=@"视图2";
vcThird.title=@"视图3";
UITabBarController* tbController=[[UITabBarController alloc]init];
//创建一个控制器数组对,将所有要被分栏制器管理的对象添加到数组中
NSArray* arrayVC=[NSArray arrayWithObjects:vcFirst,vcSecond,vcThrid.nil];
//将分栏视图控制器管理数组赋值
tbController.viewControllers=arrayVC;
//将分栏控制器做为根视图控制器
self.window.rootViewController=tbController;
//设置选中的视图控器的索引,通过索引来确定显示哪个一人控器,默认值从0开始
tbController.selectedIndex=2;
if(tbController.selectedViewController==vcThird){
NSLog(@"当前显示的是控制器三~");
}
//设置分栏控制器的工具栏的透明度
tbController.tabBar.translucent=NO;
return YES;
}