UITabBarController 標籤欄控制器-IOS開發

來源:互聯網
上載者:User
聲明

歡迎轉載,但是請尊重作者勞動成果,轉載請保留此框內聲明,謝謝。
文章出處:http://blog.csdn.net/iukey

在 UIKit 中UITabbar 代表了標籤欄,而 UITabBarController 對其進行了封裝,令多個不同的視圖管理與切換變的更加輕鬆。

構建一個標籤欄控制器,首先要為每個按鈕準備一個單獨的頁。每一頁都應被建立為UIViewController對象。

構建一個控制器數組:

你的應用程式可能有多個不同的試圖控制器,來實現不同的功能。如果你在寫一個音樂播放器,可能會有一些控制器,如:MusicList、CurrentPlay、Favourite、SingerList、Settings 等。在建立你的標籤欄之前,你應該首先建立一個數組,在其中放置你希望在標籤欄中顯示的視圖控制器對象。

 //產生各個視圖控制器    MusicList* musicList = [[[MusicList alloc]init]autorelease];    CurrentPlay* currentPlay = [[[CurrentPlay alloc]init]autorelease];    Favourite* favourite = [[[Favourite alloc]init]autorelease];    SingerList* singerList = [[[SingerList alloc]init]autorelease];    Settings* settings = [[[Settings alloc]initWithStyle:UITableViewStyleGrouped]autorelease];//加入一個數組        NSArray* controllerArray = [[NSArray alloc]initWithObjects:musicList,currentPlay,favourite,singerList,settings ,nil];

配置按鈕屬性:

每個標籤欄都有他自己的“標籤”,定義了他的標籤按鈕是什麼樣子。在視圖控制器的 init 方法中,可以配置標籤欄按鈕,定義視圖的標題與/或 tabBarItem 屬性:

- (id)initWithStyle:(UITableViewStyle)style{    self = [super initWithStyle:style];    if (self) {    self.tabBarItem = [[UITabBarItem alloc]initWithTitle:@"Settings" image:[UIImage imageNamed:@"Setting"] tag:4];    }    return self;}

請將 tabBarItem 屬性設定為一個 UITabBarItem 對象。你有兩種方法可以初始化標籤欄中的項目。一種是initWithTitle 可以讓你自訂標題和映像等資料來顯示按鈕。另一種就是建立系統提供的按鈕。後者如下:

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil{    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];    if (self) {      self.tabBarItem = [[UITabBarItem alloc]initWithTabBarSystemItem:UITabBarSystemItemFavorites tag:2];    }    return self;}

系統提供的按鈕如下:

typedef enum {    UITabBarSystemItemMore,    UITabBarSystemItemFavorites,    UITabBarSystemItemFeatured,    UITabBarSystemItemTopRated,    UITabBarSystemItemRecents,    UITabBarSystemItemContacts,    UITabBarSystemItemHistory,    UITabBarSystemItemBookmarks,    UITabBarSystemItemSearch,    UITabBarSystemItemDownloads,    UITabBarSystemItemMostRecent,    UITabBarSystemItemMostViewed,} UITabBarSystemItem;

顯示標籤欄控制器:

標籤欄所需的各個控制器都好了,現在就可以產生我們的標籤欄控制器了。忘了講了,控制器我是在

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions  中產生的。

//建立UITabBarController控制器      UITabBarController* tabBarController = [[UITabBarController alloc]init];//設定UITabBarController控制器的viewControllers屬性為我們之前產生的數組controllerArray    tabBarController.viewControllers = controllerArray;//    預設選擇第2個視圖選項卡(索引從0開始的)    tabBarController.selectedIndex = 1;//    把tabBarController的view作為子視圖添加到window    [self.window addSubview:tabBarController.view];

可定製按鈕
預設情況下,當按鈕多於5個時,標籤欄控制器允許擁護對按鈕布局進行定製。要做到這一點,可以單擊標有“更多”的標籤,然後單擊隨之出現的導覽列上的編輯按鈕。你可以選擇只對某些特定的標籤進行定製,也可以完全禁止定製。要允許定製,請將標籤欄控制器的 customizableViewControllers 設定為一個數組,數組中包含有你希望使用者進行定製的試圖控制器:

導航

當標籤欄控制器被顯示時,控制器自己處理導航操作,會將選中標籤對應視圖自動切換到螢幕前端。要讀取或者更改當前活動的試圖控制器,可以使用 selectedViewController 屬性:

  tabBarController.selectedViewController = musicList;    //讀取    UIViewController* activeController = tabBarController.selectedViewController;    if(activeController == musicList){        //    }

也可以使用索引:

tabBarController.selectedIndex = 1;

委託代理

要在標籤欄上的視圖被選中時得到通知,請賦予標籤欄控制器一個委託:

tabBarController.delegate = self;

 委託會在選中一個tab時得到通知,然後 didSelectViewController 的委託方法會被調用:

- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController{    /*添加代碼,處理定製標籤欄結束之後的操作*/}

至此結束,最後附上代碼工程檔案。
UITabBarViewControllerDemo

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.