Question

J'aime avoir une image sélectionnée personnalisée lorsqu'un utilisateur sélectionne un élément dans la barre d'onglet, par défaut, il sélectionne le bleu comme mais aimerait avoir une place couleur verte. quelque chose comme ci-dessous toutes les pensées?

Était-ce utile?

La solution

Juste trouvé ma solution. Au fond, je UITabItem et mis en sous-classé ce dans le contrôleur de navigation:

-(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;            
}

Voici ce que les regards de la classe CustomTabBarItem comme:

@interface CustomTabBarItem : UITabBarItem
{
    UIImage  *customHighlightedImage;
}

@property (nonatomic, retain) UIImage *customHighlightedImage;

@end

Mise en oeuvre:

#import "CustomTabBarItem.h

@implementation CustomTabBarItem

@synthesize customHighlightedImage;

- (void)dealloc {
    [customHighlightedImage release];
    customHighlightedImage=nil;
    [super dealloc];
}

-(UIImage *)selectedImage {
    return self.customHighlightedImage;
}

@end

Autres conseils

Dans iOS 6 je changer l'image sélectionnée comme tabbatitem -

dans le contrôleur TabBar méthode déléguée

- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController

{
    if([tabBarController selectedIndex] == 0)
    {
        [viewController.tabBarItem setFinishedSelectedImage:[UIImage imageNamed:@"selected.png"]withFinishedUnselectedImage:[UIImage imageNamed:@"unselect.png"]];
    }    
}

à cela, vous pouvez changer votre image.

Ou vous pouvez utiliser directement dans vos contrôleurs de vue méthode init (ou viewWillAppear), comme

        [viewController.tabBarItem setFinishedSelectedImage:[UIImage imageNamed:@"selected.png"]withFinishedUnselectedImage:[UIImage imageNamed:@"unselect.png"]];

J'espère que cela va vous aider.

Il suffit d'ajouter quelques vues personnalisées (en utilisant insertSubview. AtIndex :) lorsque les méthodes UITabBarController-délégué sont appelés

Exemple:

– (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController {
    [tabBarController.tabBar insertSubview:someView atIndex:someIndex];
}

Vous pouvez essayer de changer someIndex vous jusqu'à ce que vous avez le résultat que vous voulez.

Ce n'est pas officiellement pris en charge dans le SDK. Vous pourrez peut-être sonder et régler lors de l'exécution des vues de l'onglet, mais vous risquez un rejet d'Apple.

Edit:. Pour être complet, je dois mentionner que votre autre option est de rouler votre propre UITabBar

Pour iOS5 et vers le haut, vous pouvez simplement faire ceci:

rootTabBarController.tabBar.selectedImageTintColor = [UIColor greenColor];

Je crois que vous pouvez le faire avec:

[[[[self tabBar] items] objectAtIndex:0] setFinishedSelectedImage:nil withFinishedUnselectedImage:nil];

Lors de l'utilisation storyboards, vous pouvez sélectionner simplement votre TabBar de TabBarController puis changer l'image Tint dans l'inspecteur d'identité. Cela devrait également travailler avec XIBs.

Regardez ici pour une image décrivant le todos

Dans AppDelegate.m

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions (NSDictionary *)launchOptions {

[[UITabBar appearance] setSelectedImageTintColor:[UIColor redColor]]; 

return YES;

}

Cela vous donnera une couleur rouge, changer la couleur avec celui que vous souhaitez whiteColor, etc .. blueColor

Dans mon viewDidLoad: de UITabBarController, basée sur la réponse de Rizzu:

for (int i = 0; i < [self.viewControllers count]; i++)
{
    UIViewController* viewController = [self.viewControllers objectAtIndex:i];

    if(i == 0)
    {
        [viewController.tabBarItem setFinishedSelectedImage:[UIImage imageNamed:@"btn_list_all_hover.png"]withFinishedUnselectedImage:[UIImage imageNamed:@"btn_list_all.png"]];
    }
    else if(i == 1)
    {
        [viewController.tabBarItem setFinishedSelectedImage:[UIImage imageNamed:@"btn_settings_hover.png"]withFinishedUnselectedImage:[UIImage imageNamed:@"btn_settings.png"]];
    }
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top