Ricarica / Aggiorna elementi barra delle schede in un ViewController?
-
26-09-2019 - |
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
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.