日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

学习笔记:UITabBarController使用详解

發布時間:2025/7/25 64 豆豆
生活随笔 收集整理的這篇文章主要介紹了 学习笔记:UITabBarController使用详解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、手動創建UITabBarController

  最常見的創建UITabBarController的地方就是在application delegate中的?applicationDidFinishLaunching:方法,因為UITabBarController通常是作為整個程序的rootViewController的,我們需要在程序的window顯示之前就創建好它,具體步驟如下:

  1、創建一個UITabBarController對象

  2、創建tabbarcontroller中每一個tab對應的要顯示的對象

  3、通過UITabBarController的viewController屬性將要顯示的所有content viewcontroller添加到UITabBarController中

  4、通過設置UITabBarController對象為window.rootViewController,然后顯示window

  下面看一個簡單的例子:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];// Override point for customization after application launch.
   SvTabBarFirstViewController *viewController1, *viewController2;
viewController1 = [[SvTabBarFirstViewController alloc] initWithNibName:nil bundle:nil];viewController1.title = @"First";viewController2 = [[SvTabBarFirstViewController alloc] initWithNibName:nil bundle:nil];viewController2.title = @"Second";self.tabBarController = [[[UITabBarController alloc] init] autorelease];self.tabBarController.delegate = self;self.tabBarController.viewControllers = [NSArray arrayWithObjects:viewController1, viewController2, nil];
[viewController1 release];[viewController2 release];self.window.rootViewController = self.tabBarController;[self.window makeKeyAndVisible];return YES; }

?

二、UITabBarItem

  UITabBar上面顯示的每一個Tab都對應著一個ViewController,我們可以通過設置viewcontroller.tabBarItem屬性來改變tabbar上對應的tab顯示內容。否則系統將會根據viewController的title自動創建一個,該tabBarItem只顯示文字,沒有圖像。當我們自己創建UITabBarItem的時候,我們可以顯示的指定顯示的圖像和對應的文字描述。當然還可以通過setFinishedSelectedImage:withFinishedUnselectedImage:方法給選中狀態和飛選中狀態指定不同的圖片。下面看個自己創建UITabBarItem的小例子:

UITabBarItem *item = [[UITabBarItem alloc] initWithTitle:@"Second" image:nil tag:2]; [item setFinishedSelectedImage:[UIImage imageNamed:@"second.png"] withFinishedUnselectedImage:[UIImage imageNamed:@"first.png"]]; viewController2.tabBarItem = item; [item release];

  此外UITabBarItem還有一個屬性badgeValue,通過設置該屬性可以在其右上角顯示一個小的角標,通常用于提示用戶有新的消息,使用很簡單,后面有例子。

?

三、moreNavigationController

  UITabBar上最多可以顯示5個Tab,當我們往UITabBarController中添加超過的viewController超過5個時候,最后一個一個就會自動變成,按照設置的viewControlles的順序,顯示前四個viewController的tabBarItem,后面的tabBarItem將不再顯示。當點擊more時候將會彈出一個標準的navigationViewController,里面放有其它未顯示的的viewController,并且帶有一個edit按鈕,通過點擊該按鈕可以進入類似與ipod程序中設置tabBar的編輯界面。編輯界面中默認所有的viewController都是可以編輯的,我們可以通過設置UITabBarController的customizableViewControllers屬性來指定viewControllers的一個子集,即只允許一部分viewController是可以放到tabBar中顯示的。但是這塊兒要注意一個問題就是每當UITabBarController的viewControllers屬性發生變化的時候,customizableViewControllers就會自動設置成跟viewControllers一致,即默認的所有的viewController都是可以編輯的,如果我們要始終限制只是某一部分可編輯的話,記得在每次viewControlles發生改變的時候,重新設置一次customizableViewControllers。

  

四、UITabBarController的Rotation

  UITabBarController默認只支持豎屏,當設備方向放生變化時候,它會查詢viewControllers中包含的所有ViewController,僅當所有的viewController都支持該方向時,UITabBarController才會發生旋轉,否則默認的豎向。

  此處需要注意當UITabBarController支持旋轉,而且發生旋轉的時候,只有當前顯示的viewController會接收到旋轉的消息。

?

五、UITabBar

?  UITabBar自己有一些方法是可以改變自身狀態,但是對于UITabBarController自帶的tabBar,我們不能直接去修改其狀態。任何直接修改tabBar的操作將會拋出異常,下面看一個拋出異常的小例子:

self.tabBarController = [[[UITabBarController alloc] init] autorelease]; self.tabBarController.delegate = self; self.tabBarController.viewControllers = [NSArray arrayWithObjects:viewController1, viewController2, viewController3, nil];self.window.rootViewController = self.tabBarController; [self.window makeKeyAndVisible];self.tabBarController.tabBar.selectedItem = nil;

  上面代碼的最后一行直接修改了tabBar的狀態,運行程序回得到如下結果:

?

六、Change Selected Viewcontroller

  改變UITabBarController中當前顯示的viewController,可以通過一下兩種方法:

  1、selectedIndex屬性

  通過該屬性可以獲得當前選中的viewController,設置該屬性,可以顯示viewControllers中對應的index的viewController。如果當前選中的是MoreViewController的話,該屬性獲取出來的值是NSNotFound,而且通過該屬性也不能設置選中MoreViewController。設置index超出viewControllers的范圍,將會被忽略。

  2、selectedViewController屬性

  通過該屬性可以獲取到當前顯示的viewController,通過設置該屬性可以設置當前選中的viewController,同時更新selectedIndex。可以通過給該屬性賦值

tabBarController.moreNavigationController可以選中moreViewController。

  3、viewControllers屬性

  設置viewControllers屬性也會影響當前選中的viewController,設置該屬性時UITabBarController首先會清空所有舊的viewController,然后部署新的viewController,接著嘗試重新選中上一次顯示的viewController,如果該viewController已經不存在的話,會接著嘗試選中index和selectedIndex相同的viewController,如果該index無效的話,則默認選中第一個viewController。

?

七、UITabBarControllerDelegate

  通過代理我們可以監測UITabBarController的當前選中viewController的變化,以及moreViewController中對編輯所有viewController的編輯。通過實現下面方法:

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

  該方法用于控制TabBarItem能不能選中,返回NO,將禁止用戶點擊某一個TabBarItem被選中。但是程序內部還是可以通過直接setSelectedIndex選中該TabBarItem。

  下面這三個方法主要用于監測對moreViewController中對view controller的edit操作

- (void)tabBarController:(UITabBarController *)tabBarController willBeginCustomizingViewControllers:(NSArray *)viewControllers;- (void)tabBarController:(UITabBarController *)tabBarController willEndCustomizingViewControllers:(NSArray *)viewControllers changed:(BOOL)changed;- (void)tabBarController:(UITabBarController *)tabBarController didEndCustomizingViewControllers:(NSArray *)viewControllers changed:(BOOL)changed;

  

七、附件UITabBarController測試程序源碼

?

SvTabBarAppDelegate.h這個頭文件,折疊后加進去,總是無法展開,望大家見諒!

?

// // SvTabBarAppDelegate.h // SvTabBarControllerSample // // Created by maple on 5/19/12. // Copyright (c) 2012 smileEvday. All rights reserved. //#import <UIKit/UIKit.h>@interface SvTabBarAppDelegate : UIResponder <UIApplicationDelegate, UITabBarControllerDelegate>@property (strong, nonatomic) UIWindow *window;@property (strong, nonatomic) UITabBarController *tabBarController;@end

轉載于:https://www.cnblogs.com/lmg4819/p/4813768.html

總結

以上是生活随笔為你收集整理的学习笔记:UITabBarController使用详解的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。