2011-01-12 2 views
51

Ho un controller di visualizzazione modale la cui vista proviene da un XIB. Voglio che abbia lo stesso aspetto del resto della mia app basata sulla navigazione, ma non è una vista che viene spinta allo stack di navigazione, è presentata in modo modale. Ho trascinato una UINavigationBar e l'ho resa una presa, ma non ha una proprietà title da impostare. Ho due campi che possono far apparire questa vista modale e voglio impostare il titolo in modo diverso a seconda di quale si crea la vista modale.Imposta il titolo della barra di navigazione creata in Interface Builder

risposta

90

UINavigationBar 's gestire una pila di UINavigationItem s molto simile a un manager UINavigationController una pila di UIViewController s. Per impostare direttamente ciò che è visibile, è necessario utilizzare pushNavigationItem:animated: o setItems:animated: utilizzando l'oggetto navigationItem del controller di visualizzazione che si desidera venga riflesso.

esempio:

self.navigationItem.title = @"A custom title"; 
[self.navigationBar pushNavigationItem:self.navigationItem animated:NO]; 

Il codice di sopra, dove si dispone di una proprietà che fa riferimento al navigationBar barra di navigazione autonoma.

Se non si desidera gestire da soli, si può fare come suggerito mplappert e nidificano la visualizzazione del controller (senza stand-alone UINavigationBar) in una UINavigationController e presentare il controller di navigazione modale al posto del tuo controller della vista.

-1

Inserire semplicemente lo UIViewController in un nuovo stack di controller di visualizzazione UINavigationController e presentare modalmente il controller di navigazione.

63

Trova anche questo modo più semplice se hai già definito un UINavigationBar nel tuo IB. Supponendo self.navigationBar è il tuo IBOutlet:

self.navigationBar.topItem.title = title; 
+1

Questa è la risposta corretta. – Fengson

+0

Questo ha funzionato per me. –

+1

nel mio caso: self.navigationController.navigationBar.topItem.title = @ "title" –

8

(Usando XCode 4.5.2) Trovato un metodo che funziona direttamente in Interface Builder - senza impostare nel codice.

Con l'oggetto ViewController selezionato in (IB), sotto Identity Inspector è presente una sezione denominata "Attributi di runtime definiti dall'utente". Ho aggiunto il "titolo" keyPath di tipo String e lo ho impostato sul valore che volevo.

Testato e funziona quando viene spinto su uno stack del controller Nav e quando viene aperto modalmente (con un controller Modal Nav, ovviamente).

+1

Come localizzare questo valore? – Arvis

0

nel mio file h

  • trascinato il figlio della voce di navigazione dallo storyboard nel file .h

  • chiamò "navigationBarTitle"

nel mio .m file

  • Aggiunto self.navigationBarTitle.title = @ "Some Title";
4

viewcontroller.il file h in creare IBOutlet della voce di navigazione

 @property (weak, nonatomic) IBOutlet UINavigationItem *navigationBarTitle; 

- chiamò "navigationBarTitle"

nel file di viewcontroller.m nel aggiungere il codice in super-viewDidLoad

 self.navigationBarTitle.title = @"Favorites"; 

collegare lo storybord nella navigazione elemento della barra di navigazioneBarTitle.

0

Ecco il modo più semplice:

[[[self.navigationController navigationBar] topItem] setTitle:@"The Title"]; 
0

è possibile utilizzare barra di navigazione esistente con seguente codice

self.navigationController?.navigationBar.topItem?.title = "Calender"