Attualmente sto personalizzando l'immagine di sfondo della barra di navigazione della mia app iOS utilizzando il proxy UIAppearance. C'è un pulsante per passare da una modalità all'altra che attiva una notifica. Questa notifica cambierà lo sfondo in un'altra immagine usando di nuovo il proxy. Il mio problema è che questo cambiamento diventa visibile solo quando vado a un controller diverso e torno ad esso. Non sono in grado di forzare l'aggiornamento della barra di navigazione all'interno del controller.Aggiornamento barra di navigazione dopo una modifica utilizzando UIApisione
Ho provato questo nel mio MainTabBarController:
- (void) onAppChangedMode: (NSNotification*)notif {
APP_MODE mode = (APP_MODE) [[notif object] integerValue];
// change navigation bar appearance
[[UILabel appearance] setHighlightedTextColor:[UIColor redColor]];
[[UINavigationBar appearance] setBackgroundImage:[UIImage imageNamed:(mode == 0 ? @"navbar.png" : @"navbar2.png")] forBarMetrics:UIBarMetricsDefault];
// trying to update
for (UIViewController* vc in self.viewControllers) {
[vc.navigationController.navigationBar setNeedsDisplay];
}
}
ma niente ... non funziona. Qualche idea su come ottenerlo?
Grazie!
Non so perché, ma i cambiamenti la riapparizione al runtime non si applica a nessuna vista caricata. Tuttavia, è possibile applicare immediatamente le modifiche alle viste caricate. – ilmiacs
vuol dire che non riesco ad usare UIAppearance ma devo impostare ogni barra separatamente – Claus
No. Puoi usare UIAppearance ma le visualizzazioni visualizzate non saranno influenzate. Quindi quella visualizzata barra dovrebbe essere impostata in modo esplicito. – ilmiacs