2010-03-25 2 views
10

Я создал UITabBar и UITabBarItems без UITabBarController на нем, теперь я хочу знать, как разместить действие при щелчке UITabBarItem. Какой метод я должен использовать для действий на UITabBarItem?Как создать действие для UITabBarItem?

+0

В соответствии с Руководством по интерфейсу пользователя панели вкладок предназначены для переключения видов. Вы уверены, что не хотите использовать панель инструментов? –

ответ

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

no ... я не использую какой-либо контроллер .. – suse

20

Вы не можете установить действие на UITabBarItem объекта непосредственно. Вместо этого, контроллер вид должен реализовать следующий метод: UITabBarDelegate

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

Этот метод вызывается, когда пользователь выбирает вкладку (т.е. UITabBarItem).

+0

это сработало для меня, но не забудьте указать делегата табеля на «я» в viewdidload() – crackles

-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. Apple не одобрит его – user102008

+0

Похоже, да. Это частный API. – Dilshan

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];