(三)UITabBarController和UITabBar的基本用法

一夺溢、分欄控制器的基本概念(分欄控制器也是一個容器)

1懦胞、UITabBarController和UINavigationController一樣是用來管理試圖控制器的

2退唠、與導(dǎo)航控制器不同葬燎,tabBarController控制器使用數(shù)組管理子試圖控制器的,并且子試圖之間是平等關(guān)系拌汇,導(dǎo)航控制器所管理的試圖控制器之間是在出桟和入桟的關(guān)系

二柒桑、分欄試圖控制器的結(jié)構(gòu)

1、有兩部分組成

 1)contentView:顯示當(dāng)前controller的view

 2) tabBar(標(biāo)簽欄):負(fù)責(zé)切換顯示controller, 高度為49(相對于NavigationBar的優(yōu)勢在于可以使用戶選擇明確)

2噪舀、tabBar(標(biāo)簽欄)

  1) 標(biāo)簽欄是唯一的魁淳,就好比導(dǎo)航控制器的導(dǎo)航欄(Bar欄)

  2) .給分欄控制器和子控制器設(shè)置顏色 barTintColor
      
      (1)分欄控制器和子控制器設(shè)置顏色
       
       UITabBarController *tabBarC = [[UITabBarController alloc]init];//先創(chuàng)建分欄控制器,在給它設(shè)置顏色
       tabBarC.tabBar.barTintColor = [UIColor orangeColor];
      
      (2)子控制器設(shè)置顏色

       self.tabBarController.tabBar.tintColor = [UIColor redColor]; //改變的是選中狀態(tài)是下面字體和小圖標(biāo)的顏色
  
  3) 設(shè)置分欄的背景圖片

     backgroundImage//首先要有一個分欄控制器的對象
     tabBarC.tabBar.backgroundImage = [UIImage imageNamed:@"tupian"];  
  
  4)標(biāo)簽欄的顯示與隱藏

     hidden   
     tabBarC.tabBar.hidden = YES;//前提也是有一個分欄控制器的對象

  5)設(shè)置導(dǎo)航控制器默認(rèn)顯示的控制器( 默認(rèn)界面顯示數(shù)組里面第一個 下表為0的控制器的界面)

     selectedIndex
    tabBarC.selectedIndex = 2;//數(shù)組里面的第三個

3与倡、tabBarItem

  1) 用來控制一組控制器的切換界逛,類似選項卡,每個Tab控制一個試圖控制器纺座,點擊哪個tab就顯示對應(yīng)的試圖控制器息拜,當(dāng)前的試圖控制器

  2) 每個tabBarItem都可以設(shè)置title、image/selectedImages、badgeValue
  例如:
    
    (1).給當(dāng)前的分欄控制器的item設(shè)置一個標(biāo)題
          self.tabBarItem.title = @"我的";
    (2).給當(dāng)前的分欄控制器的item設(shè)置一個圖片
          
          self.tabBarItem.image = [UIImage imageNamed:@"tab_buddy_nor@2x"];
    (3).給當(dāng)前的分欄控制器的item設(shè)置一個選中狀態(tài)的圖片
          
          self.tabBarItem.selectedImage = [UIImage imageNamed:@"tab_me_nor@2x"];//@2x表示給高清屏 30*30的效果好

          self.tabBarItem.badgeValue = @"new";//在小圖標(biāo)的上面家字體加字體

  3) 設(shè)置選中的顏色

     分欄控制器.tabBar.tintColor
     self.tabBarController.tabBar.tintColor = [UIColor redColor]; 

  3) TabBar只能顯示五個tab Item该溯,如果超過五個則會自動生成個Morede 標(biāo)簽顯示剩余的Tab,這些Tab可以通過編輯顯示在UITabBar上(打開頁面后自動顯示在界面岛抄,點擊tabBar右邊)

  4) 自定義Item 

     [UITabBarItem alloc]initWithTitle: image: tag:

     [UITabBarItem alloc]initWithTabBarSystemItem:tag:

4别惦、支持國際化(上面在多個視圖控制器狈茉,可以在編輯那里改變字體的顏色)

  1)找到plist文件

  2)右鍵  add row  

  3)Localizations   默認(rèn)就一個ENGLISH

  4)在 添加一個 Item 1  Chinese (simplified)

三、代理監(jiān)聽分欄控制器的切換

1掸掸、視圖將要切換時調(diào)用氯庆,viewController為將要顯示的控制器,如果返回的值為NO扰付,則無法點擊其它分欄了(viewController指代將要顯示的控制器)

- (BOOL)tabBarController:(UITabBarController *)tabBarController  shouldSelectViewController:(UIViewController *)viewController
 例如1:

- (BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController
{

   NSLog(@"被選中的控制器將要顯示的按鈕");
   //return NO;不能顯示選中的控制器
   return YES;

}
 2堤撵、視圖已經(jīng)切換后調(diào)用,viewController 是已經(jīng)顯示的控制器

- (void)tabBarController:(UITabBarController *)tabBarControllerdidSelectViewController:(UIViewController *)viewController 
 例如2:
 - (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController
{
  NSLog(@"視圖顯示后調(diào)用");
}
 3羽莺、將要開始自定義item的順序

- (void)tabBarController:(UITabBarController *)tabBarController willBeginCustomizingViewControllers:(NSArray<__kindof UIViewController *> *)viewControllers 
  例如3

- (void)tabBarController:(UITabBarController *)tabBarController willBeginCustomizingViewControllers:(NSArray<__kindof UIViewController *> *)viewControllers
{

      NSLog(@"將要開始自定義item時調(diào)用");

      NSLog(@"%@",viewControllers);
}
 4实昨、將要結(jié)束自定義item的順序

- (void)tabBarController:(UITabBarController *)tabBarController willEndCustomizingViewControllers:(NSArray<__kindof UIViewController *> *)viewControllers changed:(BOOL)changed 
例如4
  
 - (void)tabBarController:(UITabBarController *)tabBarController willEndCustomizingViewControllers:(NSArray<__kindof UIViewController *> *)viewControllers changed:(BOOL)changed

{

       NSLog(@"將要結(jié)束自定義item時調(diào)用");

       NSLog(@"%@",viewControllers);
}


5、結(jié)束自定義item的順序

- (void)tabBarController:(UITabBarController *)tabBarController didEndCustomizingViewControllers:(NSArray<__kindof UIViewController *> *)viewControllers changed:(BOOL)changed 
  例如5:
 - (void)tabBarController:(UITabBarController *)tabBarController didEndCustomizingViewControllers:(NSArray<__kindof UIViewController *> *)viewControllers changed:(BOOL)changed
{

    NSLog(@"已經(jīng)結(jié)束自定義item順序時調(diào)用");

    NSLog(@"%@",viewControllers);
}

四盐固、集成分欄控制器和導(dǎo)航控制器

1荒给、在Tab Bar控制器中某一個Tab中使用Navigation控制器,這是最常見的用法

2、在一個Navigation控制器控制下的某一個或某些控制器是Tab Bar控制器刁卜,這時對該Tab Bar控制器的壓入和彈出方法和普通視圖控制器一樣(上節(jié)課講解的四種方法)

五志电、總結(jié)

1、UINavigationController蛔趴、UITabBarController和UIViewController通常都是組合出現(xiàn)的挑辆,一定要熟練使用

2、UINavigationController孝情、UITabBarController都是UIViewController的子類鱼蝉,管理的都是UIViewContrller

3、UINavigationController可以嵌套UITabBarController

4箫荡、UITabBarController可以嵌套UINavigationController

六.感悟

不管是UINavigationController還是UITabBarController都是容器魁亦,都主要要一個界面去顯示它(也叫作根控制器)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市菲茬,隨后出現(xiàn)的幾起案子吉挣,更是在濱河造成了極大的恐慌,老刑警劉巖婉弹,帶你破解...
    沈念sama閱讀 222,464評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件睬魂,死亡現(xiàn)場離奇詭異,居然都是意外死亡镀赌,警方通過查閱死者的電腦和手機(jī)氯哮,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,033評論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來商佛,“玉大人喉钢,你說我怎么就攤上這事姆打。” “怎么了肠虽?”我有些...
    開封第一講書人閱讀 169,078評論 0 362
  • 文/不壞的土叔 我叫張陵幔戏,是天一觀的道長。 經(jīng)常有香客問我税课,道長闲延,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,979評論 1 299
  • 正文 為了忘掉前任韩玩,我火速辦了婚禮垒玲,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘找颓。我一直安慰自己合愈,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 69,001評論 6 398
  • 文/花漫 我一把揭開白布击狮。 她就那樣靜靜地躺著佛析,像睡著了一般。 火紅的嫁衣襯著肌膚如雪帘不。 梳的紋絲不亂的頭發(fā)上说莫,一...
    開封第一講書人閱讀 52,584評論 1 312
  • 那天,我揣著相機(jī)與錄音寞焙,去河邊找鬼储狭。 笑死,一個胖子當(dāng)著我的面吹牛捣郊,可吹牛的內(nèi)容都是我干的辽狈。 我是一名探鬼主播,決...
    沈念sama閱讀 41,085評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼呛牲,長吁一口氣:“原來是場噩夢啊……” “哼刮萌!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起娘扩,我...
    開封第一講書人閱讀 40,023評論 0 277
  • 序言:老撾萬榮一對情侶失蹤着茸,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后琐旁,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體涮阔,經(jīng)...
    沈念sama閱讀 46,555評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,626評論 3 342
  • 正文 我和宋清朗相戀三年灰殴,在試婚紗的時候發(fā)現(xiàn)自己被綠了敬特。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,769評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖伟阔,靈堂內(nèi)的尸體忽然破棺而出辣之,到底是詐尸還是另有隱情,我是刑警寧澤皱炉,帶...
    沈念sama閱讀 36,439評論 5 351
  • 正文 年R本政府宣布怀估,位于F島的核電站,受9級特大地震影響娃承,放射性物質(zhì)發(fā)生泄漏奏夫。R本人自食惡果不足惜怕篷,卻給世界環(huán)境...
    茶點故事閱讀 42,115評論 3 335
  • 文/蒙蒙 一历筝、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧廊谓,春花似錦梳猪、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,601評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至叠荠,卻和暖如春匿沛,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背榛鼎。 一陣腳步聲響...
    開封第一講書人閱讀 33,702評論 1 274
  • 我被黑心中介騙來泰國打工逃呼, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人者娱。 一個月前我還...
    沈念sama閱讀 49,191評論 3 378
  • 正文 我出身青樓抡笼,卻偏偏與公主長得像,于是被迫代替她去往敵國和親黄鳍。 傳聞我的和親對象是個殘疾皇子推姻,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,781評論 2 361

推薦閱讀更多精彩內(nèi)容