2015-08-22 4 views
5

Ho tre controller di visualizzazione che voglio avere la stessa barra di navigazione, ma non riesco a capire un modo per "condividere" la barra di navigazione tra quelle tre viste. C'è un modo più efficiente per collegare i controller di navigazione con i controller di visualizzazione in modo che non disponga di tre diversi controller di navigazione anche se i controller di navigazione sono esattamente gli stessi?Il modo migliore per condividere la barra di navigazione tra più visualizzazioni?

Inoltre, ho un controller di barra delle linguette se questo fa la differenza.

Immagine per chiarire:

enter image description here

+0

possibile duplicato di [Come posso visualizzare la stessa barra di navigazione su molte viste?] (Http://stackoverflow.com/questions/21741731/how-do-i-display-the-same-navigation-bar-thoutout -molte viste) – Ch0k0l8

risposta

3

Come Ch0k0I8 accennato, UIAppearance è un buon modo per impostare un tema comune interfaccia utente in tutta l'applicazione.

Se si sta cercando la stessa funzionalità tra i controller di navigazione, è necessario creare sottoclasse UINavigationController e implementare la funzionalità comune lì. Quindi puoi utilizzare il tuo controller di navigazione personalizzato nello storyboard o in codice nei 3 luoghi che desideri. Per inserire la sottoclasse personalizzata nello storyboard, trascina uno UINavigationController nello storyboard come faresti normalmente, quindi modifica la classe nella classe del controller di navigazione personalizzato nella scheda Utility. Ecco quello che una sottoclasse personalizzata UINavigationController potrebbe essere simile:

class CustomNavController: UINavigationController { 
    override func viewDidLoad() { 
     super.viewDidLoad() 
     // do whatever custom setup stuff you want here 
    } 

    // override other methods for different customizations 
} 
+0

Mi scuso per il mio nonno (sono un programmatore Android a memoria), ma cosa intendi con "sottoclasse [ing]" dell'UINavController? Sono anche confuso su come posso creare un controller di barra di navigazione personalizzato nello storyboard –

+1

Aggiornato la mia risposta. Se sei un programmatore Android, dovresti avere familiarità con la sottoclasse. Le app Android e iOS sono molto simili e gran parte di esse si basa sulla programmazione orientata agli oggetti. – keithbhunter

+0

Quindi ho ancora bisogno di aggiungere un controller nav separato per ogni vista? –

2

è necessario utilizzare UIAppearance.

https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIAppearance_Protocol/index.html#//apple_ref/occ/intf/UIAppearance

[[UINavigationBar appearance] setTintColor: color]; 
+0

È possibile avere un'interfaccia utente coerente nell'app utilizzando il protocollo UIApearance. Se non è il tuo caso, allora è sbagliato. – Ch0k0l8

+1

Sto cercando di mantenere la stessa funzionalità (cioè i pulsanti nella barra di navigazione) oltre al colore; posso farlo con UIAppearance? –

0

Si sta utilizzando uno storyboard, e da quello che si sta descrivendo, non hai bisogno di tre controller nav. Invece, collega i tre UIViewControllers tenendo premuto ctrl da uno a quello successivo per creare un push seguito. Non utilizzare il proxy UIAppearance; imposta semplicemente l'aspetto della barra nel metodo del tuo controller di navigazione .

+0

Ho ancora bisogno di avere tre controller di navigazione separati? –

+0

@JacobPlatin Assolutamente no. Ho modificato la mia risposta. Un controller nav controlla, o contiene, un flusso attraverso l'app, in modo tale che ogni scena che contiene passi nella scena successiva. – NRitH