2016-06-29 11 views
5

Ho iniziato a studiare lo sviluppo di iOS di recente. Ho creato un progetto utilizzando UINavigationController incorporandolo perché ho bisogno di una barra del titolo. Ma posso ottenere la stessa cosa usando UINavigationBar dalla libreria di oggetti.Differenza tra l'utilizzo di UINavigationController e UINavigationBar

L'unica differenza che ho visto è quando uso UINavigationController. Ricevo un pulsante indietro quando utilizzo sequenze. Ci sono altre differenze tra loro? Quale viene utilizzato in quali situazioni?

A proposito, perché un altro NavigationController viene aggiunto al mio storyboard? Qual è il significato di questo? (Nessuno ha spiegato a riguardo in ogni video che ho visto)

Grazie.

risposta

3

Il NavigationController gestisce un proprio UINavigationBar automaticamente ed inoltre gestisce il vostro stack di spostamento di viewControllers, La NavigationController ha un delegato che è possibile utilizzare per sapere cosa sta succedendo nel vostro viewControllerNavigationStack e così via

Utilizzando il delegato di NavigationController voi può ad esempio essere notificato quando:

  • Il navigationController mostrerà alcune viewController, con questo metodo:

    - (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated;

  • Il navigationController ha mostrato un po 'di viewController, con questo metodo:

    - (void)navigationController:(UINavigationController *)navigationController didShowViewController:(UIViewController *)viewController animated:(BOOL)animated; 
    

È inoltre possibile utilizzare NavigationController di andare in specifiche viewController sul tuo stack di navigazione, per esempio, oppure si può pop e spingere viewController senza sfocia

+0

"Il navigationController ha un delegato che non puoi utilizzare per sapere cosa sta succedendo nel vostro viewControllerNavigationStack e così via ". Puoi spiegarlo di più per favore? –

+0

@ user6528991 la mia risposta è stata modificata per spiegare il tuo commento, spero che questo aiuti –

+0

intendesse "can" non "cant" ma non puoi modificare una domanda in SO fino a quando non fai 6 caratteri. – Hakim

2

Il UINavigationBar:

La classe UINavigationBar fornisce un controllo per la navigazione del contenuto gerarchico . È una barra, in genere visualizzata nella parte superiore dello schermo , contenente i pulsanti per la navigazione all'interno di una gerarchia di schermate . Le proprietà principali sono un pulsante sinistro (indietro), un titolo centrale e un pulsante destro facoltativo. È possibile utilizzare una barra di navigazione come oggetto autonomo o in combinazione con un oggetto di controllo di navigazione .

Il UINavigationController:

La classe UINavigationController implementa un controller della vista specializzata che gestisce la navigazione dei contenuti gerarchico. Questa interfaccia di navigazione consente di presentare i tuoi dati in modo efficiente e semplifica l'utente nella navigazione di tali contenuti. Generalmente si utilizza questa classe così com'è, ma è anche possibile creare una sottoclasse su per personalizzare il comportamento della classe.

Utilizzando una barra di navigazione con un controller di navigazione

Il modo più comune di utilizzare una barra di navigazione è in congiunzione con un oggetto UINavigationController. Se si utilizza un controller di navigazione su per gestire la navigazione tra diversi schermi di contenuti, il controller di navigazione crea automaticamente la barra di navigazione e spinge e apre gli elementi di navigazione quando appropriato.

Un controller di navigazione si assegna automaticamente come delegato dell'oggetto barra di navigazione. Pertanto, quando si utilizza un controller di navigazione , non assegnare un oggetto delegato personalizzato alla corrispondente barra di navigazione

enter image description here