Nella mia applicazione che funziona bene su iOS 4 navigationBar dissappeared partire iOS 5. Qui è quello che ho pensato problema causato: stavo togliendo subviews nel metodo RootViewController viewWillAppear:iOS 5 UINavigationBar rimozione subviews (immagine visualizzazione secondaria) rimuove barra di navigazione
for(UIView* view in self.navigationController.navigationBar.subviews)
{
if ([view isKindOfClass:[UILabel class]])
{
[view removeFromSuperview];
}
if([view isKindOfClass:[UIImageView class]])
{
[view removeFromSuperview];
}
}
Lo stavo facendo perché il controller della seconda vista che spingo sul controller di navigazione aggiunge l'immagine e l'etichetta alla barra di navigazione che devo rimuovere quando viene visualizzata la vista. In iOS 5 il codice sopra rimuove navigationBar. Come risolvere questo o il giusto modo di farlo per supportare sia iOS4 che iOS 5?
Sì, questo funzionerà tecnicamente, ma il codice diventa significativamente meno comprensibile se tu o qualcun altro hai bisogno di tornare più tardi. Corri il rischio di non riuscire a leggere e tenere traccia di ciò che sta facendo il tuo codice. Per lo meno fai costanti quelle tag per vedere cosa stai rimuovendo. – RPeck
Si potrebbe semplicemente rimuovere la sottoview usando il codice sottostante [(UILabel *) [self.navigationController.navigationBar viewWithTag: yourViewTag] removeFromSuperview]; – Himanshu