Ho una barra di navigazione in una vista e desidero modificare il titolo dell'elemento di navigazione a livello di codice.
Come si fa?
Risposte:
In viewDidLoad
self.title = @"Title";
Dalla documentazione Apple :
Il modo più comune per utilizzare una barra di navigazione è con un controller di navigazione. Puoi anche utilizzare una barra di navigazione come oggetto autonomo nella tua app.
Quindi, se hai un UINavigationController, tutto quello che devi fare per impostare il titolo della barra di navigazione (come spiegato in tutte le risposte precedenti)
self.navigationItem.title = @"title";
Ma se hai una barra di navigazione autonoma che viene creata a livello di codice all'interno di un oggetto di UIViewController, devi impostare l'aspetto iniziale della barra di navigazione creando gli oggetti UINavigationItem appropriati e aggiungendoli allo stack di oggetti della barra di navigazione, ad es.
Esempio di codice Objective-C per i passaggi menzionati:
UINavigationBar* navbar = [[UINavigationBar alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, 64)];
/* Create navigation item object & set the title of navigation bar. */
UINavigationItem* navItem = [[UINavigationItem alloc] initWithTitle:self.shoppingItem.name];
/* Create left button item. */
UIBarButtonItem* cancelBtn = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCancel target:self action:@selector(onTapCancel:)];
navItem.leftBarButtonItem = cancelBtn;
/* Create left button item. */
UIBarButtonItem* doneBtn = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(onTapDone:)];
navItem.rightBarButtonItem = doneBtn;
/* Assign the navigation item to the navigation bar.*/
[navbar setItems:@[navItem]];
/* add navigation bar to the root view.*/
[self.view addSubview:navbar];
Per la versione Swift della barra di navigazione standalone, dai un'occhiata a questa risposta .
Scrivi il codice sotto viewDidLoad
o potrebbe essere meglio sottoinitWithNibName:
self.navigationItem.title = @"title";
Grazie.
Puoi anche usare 👇🏻
[self.navigationController.navigationBar.topItem setTitle:@"Titlet"];
Usalo nel metodo ViewDidLoad
Formato :
@property(nonatomic,readonly,retain) UINavigationItem *navigationItem; // Created on-demand so that a view controller may customize its navigation appearance.
Esempio :
self.navigationItem.title = @"Title here";
Nota molto importante: assicurati di apportare le modifiche sopra menzionate nella vista genitore Metodo viewDidLoad del controller o barra di navigazione dei genitori nello storyboard
A volte potresti ottenere un caso in cui stai aggiornando il titolo e non sta causando alcun effetto, questo può essere quando hai una visualizzazione personalizzata su topItem
quindi potresti volerlo aggiornare in questo modo:(self.navigationController?.navigationBar.topItem?.titleView as? UILabel)?.text = "My Happy New Title"