I have created a UITabBar and UITabBarItems without UITabBarController on it, now i want to know how to place an action on click of the UITabBarItem.What is the method i should use for action on UITabBarItem?
4 Answers
You can't set an action on a UITabBarItem
object directly. Instead, your view controller should implement the following UITabBarDelegate
method:
- (void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item;
This method is called when the user selects a tab (i.e. UITabBarItem
).

- 27,575
- 16
- 91
- 128
-
this worked for me but remember to set the tabbar's delegate to 'self' in viewdidload() – crackles Jun 29 '17 at 07:56
Are you using a UINavigationController? If so, from the active view controller subclass you get the navigationItem and add the buttons to it, e.g.:
- (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];
}

- 1,831
- 13
- 19
Can you get away with using instances of UIToolbar and UIBarButtonItem instead? It could be more straightforward.
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];
There is a better method than didSelectItem:
for each TabBarItem you create an action:
and then you can use the new actions:
[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/>
}
That works for me

- 12,614
- 4
- 41
- 62

- 21
- 1