一、分欄控制器的基本概念
1、UITabBarController和UINavigationController一樣是用來管理試圖控制器的
2、與導航控制器不同,tab控制器使用數(shù)組管理子試圖控制器的,并且子試圖之間是平等關系,導航控制器所管理的試圖控制器之間上
練習:
1、創(chuàng)建若干個子視圖控制器(它們是并列的關系)
2、創(chuàng)建一個數(shù)組,將已創(chuàng)建的子視圖控制器,添加到數(shù)組中
3、創(chuàng)建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、我們將子視圖控制器放入數(shù)組中
5、初始化tabBarcontroller
6、將數(shù)組放入tabBar控制器中,方法viewControllers
三、代理監(jiān)聽分欄控制器的切換
1、視圖將要切換時調(diào)用,viewController為將要顯示的控制器,如果返回的值為NO,則無法點擊其它分欄了
- (BOOL)tabBarController:(UITabBarController *)tabBarControllershouldSelectViewController:(UIViewController *)viewController
2、視圖已經(jīng)切換后調(diào)用,viewController 是已經(jīng)顯示的控制器
- (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通常都是組合出現(xiàn)的,一定要熟練使用
2、UINavigationController、UITabBarController都是UIViewController的子類,管理的都是UIViewContrller
3、UINavigationController可以嵌套UITabBarController
4、UITabBarController可以嵌套UINavigationController