Как создать действие для UITabBarItem?

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

Ответ 1

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

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

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

Ответ 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];
}

Ответ 3

Вы можете избежать использования экземпляров 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];

Ответ 4

Существует лучший метод, чем 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/>
}

Это работает для меня