0

我想知道是否有一種方法可以添加額外的UITabBarItem到我現有的UITabBarController。它不需要在運行時。添加額外的UITabbarItem到UITabbarController

我想要做的就是按下這個按鈕時,我想要presentModalViewController:超過我實際上可見的ViewController,它應該是TabBarController或它的控制器。

希望這是足夠清楚的,如果不是,請隨時問。

回答

0

訪問的TabBar - 你的UITabBarController(reference)的財產,搶元素陣列與items - 屬性(reference),添加一個新的UITabBarItem這個陣列,使用的TabBar的setItems:animated: - 方法來更新你的標籤欄。添加一個動作到這個標籤欄來顯示模態視圖控制器。

2

作爲我的研究結果,您不能將UITabBarItem添加到由UITabBarController管理的UITabBar。

既然你也許已經通過添加視圖控制器列表中所增加的UITabBarItem,這也是你的選擇,以進一步增加自定義UITabBarItems的方式,因爲我現在將顯示:

先決條件:

tabbarController = [[UITabBarController alloc] init]; // tabbarController has to be defined in your header file 

FirstViewController *vc1 = [[FirstViewController alloc] initWithNibName:@"FirstViewController" bundle:[NSBundle mainBundle]]; 
vc1.tabBarItem.title = @"First View Controller"; // Let the controller manage the UITabBarItem 

SecondViewController *vc2 = [[SecondViewController alloc] initWithNibName:@"SecondViewController" bundle:[NSBundle mainBundle]]; 
vc2.tabBarItem.title = @"Second View Controller"; 

[tabbarController setViewControllers:[NSArray arrayWithObjects: vc1, vc2, nil]]; 

tabbarController.delegate = self; // do not forget to delegate events to our appdelegate 

添加自定義UITabBarItems:正如我之前提到的,您也許已經通過添加視圖控制器列表中所增加的UITabBarItems 現在既然你知道如何添加UITabB通過添加視圖控制器arItems,你也可以用同樣的方式來添加自定義UITabBarItems:

UIViewController *tmpController = [[UIViewController alloc] init]; 
tmpController.tabBarItem.title = @"Custom TabBar Item"; 
// You could also add your custom image: 
// tmpController.tabBarItem.image = [UIImage alloc]; 
// Define a custom tag (integers or enums only), so you can identify when it gets tapped: 
tmpController.tabBarItem.tag = 1; 

修改上面的一行:

[tabbarController setViewControllers:[NSArray arrayWithObjects: vc1, vc2, tmpController, nil]]; 

[tmpController release]; // do not forget to release the tmpController after adding to the list 

一切都很好,現在你有你的TabBar您的自定義按鈕。

如何處理這個自定義UITabBarItem的事件?

它很容易,看看:

的UITabBarControllerDelegate添加到您的AppDelegate類(或者是持有tabbarController類)。

@interface YourAppDelegate : NSObject <UIApplicationDelegate, UITabBarControllerDelegate> { } 

加入此功能適合的協議定義:

- (void)tabBarController:(UITabBarController *)theTabBarController didSelectViewController:(UIViewController *)viewController { 
    NSUInteger indexOfTab = [theTabBarController.viewControllers indexOfObject:viewController]; 

    UITabBarItem *item = [theTabBarController.tabBar.items objectAtIndex:indexOfTab]; 
    NSLog(@"Tab index = %u (%u), itemtag: %d", indexOfTab, item.tag); 
    switch (item.tag) { 
    case 1: 
     // Do your stuff 
     break; 

    default: 
     break; 
    } 
} 

現在你有所有你需要創建和處理自定義UITabBarItems。 希望這有助於。 玩得開心....