Domanda

mi piace avere un'immagine personalizzata selezionata quando un utente seleziona un elemento nella barra delle schede, per impostazione predefinita seleziona come blu come, ma vorrebbe avere un colore verde invece. qualcosa di simile sotto ogni pensiero?

alt text

È stato utile?

Soluzione

Appena trovato la mia soluzione. Fondamentalmente, io sottoclasse UITabItem e impostare questa nel controller di navigazione:

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

Ecco cosa gli sguardi di classe CustomTabBarItem come:

@interface CustomTabBarItem : UITabBarItem
{
    UIImage  *customHighlightedImage;
}

@property (nonatomic, retain) UIImage *customHighlightedImage;

@end

applicazione:

#import "CustomTabBarItem.h

@implementation CustomTabBarItem

@synthesize customHighlightedImage;

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

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

@end

Altri suggerimenti

In iOS 6 devo cambiare l'immagine selezionata come tabbatitem -

in TabBar regolatore di metodo delegato

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

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

attraverso questo si può cambiare la vostra immagine.

In alternativa è possibile utilizzare direttamente nei vostri controller di vista init (o viewWillAppear) metodo, come

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

Spero che questo ti aiuto.

Basta aggiungere visualizzazioni personalizzate (utilizzando insertSubview:. AtIndex :) quando i UITabBarController-delegato-metodi vengono chiamati

Esempio:

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

Si può provare a cambiare someIndex te stesso fino ad ottenere il risultato desiderato.

Questa non è ufficialmente supportato nel SDK. Si può essere in grado di sondare e regolare le opinioni della scheda in fase di esecuzione, ma si rischia un rifiuto da parte di Apple.

Modifica:. Per completezza, vorrei ricordare che l'altra opzione è quella di rotolare il proprio UITabBar

Per iOS5 e verso l'alto, si può solo fare questo:

rootTabBarController.tabBar.selectedImageTintColor = [UIColor greenColor];

Credo che ora si può fare questo con:

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

Quando si utilizza storyboard si può semplicemente selezionare la TabBar di TabBarController e quindi modificare l'immagine Tinta nella finestra di ispezione identità. Questo lavoro dovrebbe anche con XIBs.

Guardate qui per un'immagine che descrive il todos

In AppDelegate.m

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

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

return YES;

}

Questo vi darà un colore rosso, cambiare il colore con quello che si desidera WhiteColor, blueColor etc ..

Nel mio viewDidLoad: di UITabBarController, in base alla risposta del 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"]];
    }
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top