Search code examples
iphoneuitabbaruitabbaritem

Is there a way to use a custom selected image for UITabBarItem?


I like to have a custom selected image when a user selects an item on the tab bar, by default it selects as blue like but would like to have a green color instead. something like below any thoughts?

alt text


Solution

  • Just found my solution. Basically, I subclassed UITabItem and set this in the navigation controller:

    -(void) viewDidAppear:(BOOL)animated {
        [super viewDidAppear:animated];
    
        CustomTabBarItem *tabItem = [[CustomTabBarItem alloc] initWithTitle:@"Events" image:[UIImage imageNamed:@"tabIcon.png"] tag:0];
        tabItem.customHighlightedImage=[UIImage imageNamed:@"tabIconSelected.png"];
        self.tabBarItem = tabItem;
        [tabItem release];
        tabItem=nil;            
    }
    

    Here's what the CustomTabBarItem class looks like:

    @interface CustomTabBarItem : UITabBarItem
    {
        UIImage  *customHighlightedImage;
    }
    
    @property (nonatomic, retain) UIImage *customHighlightedImage;
    
    @end
    

    implementation:

    #import "CustomTabBarItem.h
    
    @implementation CustomTabBarItem
    
    @synthesize customHighlightedImage;
    
    - (void)dealloc {
        [customHighlightedImage release];
        customHighlightedImage=nil;
        [super dealloc];
    }
    
    -(UIImage *)selectedImage {
        return self.customHighlightedImage;
    }
    
    @end