2011-10-12 11 views
9

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?

risposta

6

setTag per quelle immagini e uilabel quindi rimuoverlo dal codice sopra ha fatto il trucco.

for(UIView* view in self.navigationController.navigationBar.subviews) 
{ 
    if(view.tag == 9 || view.tag == 99) 
    { 
     [view removeFromSuperview]; 
    } 
} 
+0

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

+0

Si potrebbe semplicemente rimuovere la sottoview usando il codice sottostante [(UILabel *) [self.navigationController.navigationBar viewWithTag: yourViewTag] removeFromSuperview]; – Himanshu

0

È possibile creare sottoclassi delle rispettive classi UIKit e confrontare quelle sottoclassi specifiche. In realtà, per avere il codice più chiaro e più leggibile, dovresti creare una sottoclasse del controller di navigazione e della barra di navigazione per consentire di disegnare un'immagine e un'etichetta personalizzate in modo da poter impostare l'immagine di sfondo e l'etichetta in primo piano su zero. Ci vorrebbe un po 'di tempo per mettere insieme, ma il risultato finale sarebbe molto più estensibile.

Problemi correlati