Domanda

Sto cercando di immagini di cambiamento della mia barra delle linguette in un ViewController, ma per visualizzare i nuovi immagini, devo fare clic su ogni voce di scheda bar.

for (CustomTabBarItem *myItem in self.tabBarController.tabBar.items){
        myItem.enabled = YES; 

        myItem.badgeValue = @"1"; 

        UIImage *myImage =  [[UIImage alloc] initWithContentsOfFile:[[DesignManager sharedManager] getPathOfFile:@"test.png"]];

        *myItem.imageSelect= *myImage; // change images of each item. don't appear if I dont click on the item
}

conosco nessuno Come posso può visualizzare direttamente queste immagini? Grazie

È stato utile?

Soluzione

È necessario sostituire il vecchio oggetto scheda bar con uno nuovo. Non è possibile aggiornare l'immagine in modo dinamico in caso contrario.

Il modo più semplice per farlo è impostare la proprietà tabBarItem della vista-controllore rappresentata da una determinata scheda. Se si voleva fare questo dall'interno di tale controller di vista, basta scrivere:

self.tabBarItem = [[UITabBarItem alloc] initWithTitle: @"title" image: myImage: tag: nil];

In alternativa, si potrebbe fare questo da qualche altra parte, dire la vostra applicazione delegato:

UIViewController* vc = [tabBarController.viewControllers objectAtIndex: 3];
vc.tabBarItem = [[UITabBarItem alloc] initWithTitle: @"title" image: myImage: tag: nil];

Altri suggerimenti

So che questa è una vecchia questione. Ho incontrato lo stesso problema quando ho bisogno di aggiornare il valore distintivo da un'altra scheda attiva. Creazione di un altro UITabBarItem risolverà il vostro problema attuale ma causa potenziale perdita di memoria quando questo codice viene chiamato molte volte. Inoltre, quando gli altri controller di vista accedere alla scheda, non hanno riferimento alla UITabBarItem appena creato. Il mio trucco è

vc.tabBarItem = vc.tabBarItem; 

Si lavora per me.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top