1

As per Apple docs

I'm trying to set custom finished selected and unselected images on a UITabBarItem like so:


...
DetailViewController *vc1 = [[DetailViewController alloc] initWithNibName:@"DetailView" bundle:nil];
UITabBarItem *vc1i = [[UITabBarItem alloc] initWithTabBarSystemItem:UITabBarSystemItemTopRated tag:100];
[vc1i setFinishedSelectedImage:[UIImage imageNamed:@"tab_bar_item_selected.png"] withFinishedUnselectedImage:[UIImage imageNamed:@"tab_bar_item_normal.png"]];
[vc1 setTabBarItem:vc1i];
...

Basically what's happening is the TabBar loads up just fine, it just completely ignores the tab bar item customization.

I'm targeting iOS5+

The images are 30x30 transparent PNGs and exist in the project. Can't figure out what I'm overlooking here, but must be something!

This is being called in the tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath method, ala Ray Wenderlich's tutorial

Anyone have any ideas?

Thanks!

onkar
  • 4,427
  • 10
  • 52
  • 89
taber
  • 3,166
  • 4
  • 46
  • 72

2 Answers2

6

The tab bar item is initialized with the method: initWithTabBarSystemItem:tag:. But, as the documentation says:

This method returns a system-supplied tab bar item. The title and image properties of the returned item cannot be changed later.

You should initialize the tab bar item with initWithTitle:image:tag:.

UITabBarItem *vc1i = [[UITabBarItem alloc] initWithTitle:@"Top Rated" image:nil tag:100];
[vc1i setFinishedSelectedImage:[UIImage imageNamed:@"tab_bar_item_selected.png"] withFinishedUnselectedImage:[UIImage imageNamed:@"tab_bar_item_normal.png"]];
Nicolas Bachschmidt
  • 6,475
  • 2
  • 26
  • 36
2

If your are trying to achieve displaying of the actual image at the UITabBar then use the following code.

[yourTabBarItem setImage:[[UIImage imageNamed:@"more.png"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]];

and if you want to display image in original condition for the selected then use the following

[yourTabBarItem setSelectedImage:[[UIImage imageNamed:@"more.png"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]];

these two are alternative to

setFinishedSelectedImage:  withFinishedUnselectedImage:
Husrat Mehmood
  • 2,270
  • 1
  • 20
  • 22