一、分欄控制器的基本概念
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中
二、分欄試圖控制器的結(jié)構(gòu)
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佩研、將要結(jié)束自定義item的順序
- (void)tabBarController:(UITabBarController *)tabBarController willEndCustomizingViewControllers:(NSArray<__kindof UIViewController *> *)viewControllers changed:(BOOL)changed
5柑肴、結(jié)束自定義item的順序
- (void)tabBarController:(UITabBarController *)tabBarController didEndCustomizingViewControllers:(NSArray<__kindof UIViewController *> *)viewControllers changed:(BOOL)changed
四、集成分欄控制器和導航控制器
1旬薯、在Tab Bar控制器中某一個Tab中使用Navigation控制器,這是最常見的用法晰骑,我們將在下面具體講解這個用法
2、在一個Navigation控制器控制下的某一個或某些控制器是Tab Bar控制器绊序,這時對該Tab Bar控制器的壓入和彈出方法和普通視圖控制器一樣
五硕舆、總結(jié)
1秽荞、UINavigationController、UITabBarController和UIViewController通常都是組合出現(xiàn)的抚官,一定要熟練使用
2扬跋、UINavigationController、UITabBarController都是UIViewController的子類耗式,管理的都是UIViewContrller
3胁住、UINavigationController可以嵌套UITabBarController
4、UITabBarController可以嵌套UINavigationController