Search code examples
iphoneiosios5uitabbaruitabbaritem

iOS 5: UITabBarItem setFinishedSelectedImage:withFinishedUnselectedImage: not working / ignored


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!


Solution

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