當一個項目中UITabBarController,UIViewController三種控制器同時出現的時候,將標籤控制器(UITabBarController)做爲視圖的根控制器,將建立的視圖控制器做爲標籤控制器的子控制器。數組
//建立標籤控制器 UITabBarController *tabarVC = [[UITabBarController alloc]init]; NSMutableArray *viewContrArr = [NSMutableArray array]; //沒有元素 //建立五個視圖控制器 for (int i = 0; i < 5; i ++) { UIViewController *viewCotrol = [[UIViewController alloc]init]; //設置顏色 viewCotrol.view.backgroundColor = [UIColor colorWithRed:arc4random()%10*0.1 green:arc4random()%10*0.1 blue:arc4random()%10*0.1 alpha:1]; [viewContrArr addObject:viewCotrol]; } tabarVC.viewControllers = viewContrArr; self.window.rootViewController = tabarVC; /*******設置選項卡(標籤項)******/ //UITabBar:標籤欄 //UITabBarItem:選項卡 //1.使用系統的itme樣式 UITabBarItem *itme1 = [[UITabBarItem alloc]initWithTabBarSystemItem:UITabBarSystemItemFavorites tag:100]; //獲取對應的視圖控制器 UIViewController *VC1 = viewContrArr[0]; VC1.tabBarItem = itme1; UITabBarItem *itme2 = [[UITabBarItem alloc]initWithTabBarSystemItem:UITabBarSystemItemHistory tag:101]; UIViewController *VC2 = viewContrArr[1]; VC2.tabBarItem = itme2; //2.建立圖片itme UITabBarItem *itme3 = [[UITabBarItem alloc]initWithTitle:@"廣場" image:[UIImage imageNamed:@"2.png"] tag:102]; UIViewController *VC3 = viewContrArr[2]; VC3.tabBarItem = itme3; UITabBarItem *itme4 = [[UITabBarItem alloc]initWithTitle:@"" image:[UIImage imageNamed:@"3.png"] selectedImage:[UIImage imageNamed:@"選中.png"]]; UIViewController *VC4 = viewContrArr[3]; VC4.tabBarItem = itme4; //3.設置背景圖片 UITabBar [tabarVC.tabBar setBackgroundImage:[UIImage imageNamed:@"navbg.png"]]; //4.設置選項被選中的顏色 tabarVC.tabBar.tintColor = [UIColor redColor]; //5.設置背景顏色 //tabarVC.tabBar.backgroundColor = [UIColor blackColor]; //錯誤的設置方法 //tabarVC.tabBar.barTintColor = [UIColor blackColor]; //6.設置選中圖片 tabarVC.tabBar.selectionIndicatorImage = [UIImage imageNamed:@"選中"]; //7.設置提示數字 字符串類型 itme1.badgeValue = @"99+"; return YES; }
當UITabBarController,UINavigationController ,UIViewController三種控制器同時須要使用的時候,三級控制器中dom
UITabBarController爲第一級控制器,UINavigationController做爲第二級控制器,而UIViewController做爲第三極控制器.ide
自定義UITabBarController工具
- (void)_createTabBarView { //1.隱藏系統提供的工具欄 self.tabBar.hidden = YES; //2.建立工具欄 UIView *tabBarView = [[UIView alloc]initWithFrame:CGRectMake(0, 568 - 49, 320, 49)]; //tabBarView.backgroundColor = [UIColor blackColor]; [tabBarView setBackgroundColor:[UIColor colorWithPatternImage:[UIImage imageNamed:@"navbg"]]]; [self.view addSubview:tabBarView]; //建立選中視圖 //建立選中視圖 _selectImg = [[UIImageView alloc]initWithFrame:CGRectMake(0, 0, 53, 45)]; _selectImg.image = [UIImage imageNamed:@"選中.png"]; [tabBarView addSubview:_selectImg]; //建立標籤項(按鈕) //建立存放圖片名稱的數組 NSArray *imgNames = @[@"1.png",@"2.png",@"3.png",@"4.png",@"5.png"]; for (int i = 0; i < self.viewControllers.count; i ++) { UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom]; [btn setImage:[UIImage imageNamed:imgNames[i]] forState:UIControlStateNormal]; btn.frame = CGRectMake(i * (320/5), 0, 320/5, 49); [btn addTarget:self action:@selector(clickedAction:) forControlEvents:UIControlEventTouchUpInside]; [tabBarView addSubview:btn]; btn.tag = 100 + i; if (i == 0) { _selectImg.center = btn.center; } } } - (void)clickedAction:(UIButton *)btn { //根據tag值獲取子控制器的下標 int index =(int)btn.tag - 100; //根據下標獲取對象的子控制器 self.selectedViewController = self.viewControllers[index]; [UIView animateWithDuration:.2 animations:^{ _selectImg.center = btn.center; }]; }