大多數(shù)時候泡孩,我們做項目的時候因為UI設(shè)計的需要或者美觀的需要,再或者顯示我們公司或項目的與眾不同净嘀,我們會對TabBarController做一些定制轩褐;當然為了方便快捷的定制椎咧,我們一般會使用xib來實現(xiàn);
??這里具體怎么畫是個人的喜好把介,我在這里只寫相關(guān)代碼部分勤讽。
??第一步蟋座,先要有一個繼承于UITabBarController的YLMyTabBarController(包含xib)
??然后我們定制好視圖后就進入下一步,代碼實現(xiàn)部分
- (void)viewDidLoad {
[super viewDidLoad];
self.tabBar.hidden=YES;//把視圖原有的tabbar藏起來
//===================================================
//第一個參數(shù)是xib文件的名字脚牍,第二個參數(shù)加載的視圖的所有者是向臀;第三個參數(shù)是相關(guān)的數(shù)據(jù);
//返回的是一個數(shù)組:里面裝的是從xib文件中加載的所有的視圖(可能有做了很多視圖)
NSArray *array=[[NSBundle mainBundle]loadNibNamed:@"YLMyTabBarview" owner:self options:nil];
tabBarView=[array firstObject];
tabBarView.frame=CGRectMake(0, self.view.bounds.size.height-tabBarView.bounds.size.height, self.view.bounds.size.width, tabBarView.bounds.size.height);
//將自己制作的view取出來加載到視圖上-
[self.view addSubview:tabBarView];
//給自己視圖上的button綁定回調(diào)
for (UIView *temp in tabBarView.subviews) {
if (temp.tag>=200&&temp.tag<=203) {
UIButton *tempButton=(id)temp;
[tempButton addTarget:self action:@selector(tabButtonClicked:) forControlEvents:UIControlEventTouchUpInside];
}
}
}
回調(diào)和父類方法實現(xiàn)
-(void)tabButtonClicked:(UIButton*)sender{
self.selectedIndex=sender.tag-200;
for (UIView *temp in tabBarView.subviews) {
if (temp.tag>=200&&temp.tag<=203) {
UIButton *tempButton=(id)temp;
tempButton.selected=NO;
}
}
}
-(void)setSelectedIndex:(NSUInteger)selectedIndex{
//重寫父類方法是
[super setSelectedIndex:selectedIndex];
}
具體實現(xiàn)
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
//自定義的
UITabBarController *tab=[[YLMyTabBarController alloc]init];
tab.delegate=self;
//
NSArray *colors=@[[UIColor blueColor],[UIColor orangeColor],[UIColor purpleColor],[UIColor greenColor]];
//當分欄超過5欄后會建立一個表格視圖莫矗,最好不要超過5欄
NSMutableArray *vcs=[NSMutableArray array];
for (int i=0; i<colors.count; i++) {
YLViewController *testVC=[[YLViewController alloc]init];
testVC.title=[NSString stringWithFormat:@"第%d欄",i+1];
testVC.bgColor=colors[i];
//加導航
UINavigationController *nav=[[UINavigationController alloc]initWithRootViewController:testVC];
[vcs addObject:nav];
}
//
tab.viewControllers=vcs;
_window.rootViewController=tab;
return YES;
}
}