2010-03-25 18 views
10

我創建中的UITabBar一樣,並沒有UITabBarItems上的UITabBarController它,現在我想知道如何把一個動作的UITabBarItem.What的點擊都是我應該在UITabBarItem行動使用的方法?如何爲UITabBarItem創建動作?

+0

根據人機接口指南,選項卡欄用於切換視圖。你確定你不想使用工具欄嗎? – 2010-03-26 00:24:52

回答

2

您是否使用一個UINavigationController?如果是這樣,從活動視圖控制器子類,你得到的navigationItem和按鈕添加到它,例如:

- (void) viewWillAppear:(BOOL)animated; 
{ 
    [super viewWillAppear: animated]; 
    UIBarButtonItem * leftButtonItem = [[[UIBarButtonItem alloc] initWithTitle: @"Don't Show Again" style: UIBarButtonItemStyleBordered target: self action: @selector(permanentlyCloseWelcomeView)] autorelease]; 
    [[self navigationItem] setLeftBarButtonItem: leftButtonItem]; 
} 
+0

不...我沒有使用任何控制器.. – suse 2010-03-25 07:02:33

20

不能直接設置UITabBarItem對象的動作。相反,您的視圖控制器應該實現以下UITabBarDelegate方法:

- (void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item; 

當用戶選擇一個選項卡這種方法被稱爲(即UITabBarItem)。

+0

這工作對我來說,但記住要將tabbar的委託設置爲'self'in viewdidload() – crackles 2017-06-29 07:56:11

-2

沒有比didSelectItem一個更好的方法:對於每個TabBarItem 您創建一個動作:
[item1 setAction:@selector(pressItem1:)];
[item2 setAction:@selector(pressItem2:)];
[item3 setAction:@selector(pressItem3:)];
[item4 setAction:@selector(pressItem4:)];
然後你就可以使用新的動作:

-(void)pressItem1:(UITabBarItem *) item1 {<br/> 
    // Here comes your code which<br/> 
    // occurs after pressing item1.<br/> 
} 

這對我來說

+1

您正在使用私有API。蘋果不會批准它 – user102008 2011-04-23 07:10:41

+0

似乎是的。 Ita私人API。 – Dilshan 2012-08-26 10:34:08

1

能運作的,你逃避使用UIToolbar和UIBarButtonItem的實例?這可能更直接。

toolBar = [[UIToolbar alloc] init]; 
newPlayerItem = [[UIBarButtonItem alloc] initWithTitle:@"+" 
            style:UIBarButtonItemStyleBordered 
            target:self 
            action:@selector(newPlayer:)]; 

NSArray *toolBarItemsArray = [[NSArray alloc] initWithObjects:newPlayerItem, nil]; 
[toolBar setItems:toolBarItemsArray]; 
[toolBarItemsArray release];