Come impostare il titolo di una barra di navigazione a livello di codice?


86

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:


206

Nel tuo UIViewController

self.navigationItem.title = @"The title";

Sì, lo sceglierei in quanto aggiorna solo il titolo di navigationItem e non il titolo di toolbarItem.
Prakash Raman,

30

Versione Swift 3:

Se utilizzi una barra di navigazione senza controller di navigazione, puoi provare questo:

navigationBar.topItem?.title = "Your Title"

Spero in aiuto.


11

In viewDidLoad

  self.title = @"Title";

3
I miei due centesimi :) Funziona, anche se il vewcontroller fa parte di un toolbarcontroller. Quindi viene aggiornato anche il titolo dell'elemento della barra degli strumenti.
Prakash Raman,

7

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.

  1. Crea un'istanza della barra di navigazione (UINavigationBar)
  2. Creare un'istanza dell'elemento della barra di navigazione (UINavigationItem) che gestisce i pulsanti e le visualizzazioni da visualizzare in un oggetto UINavigationBar. Nota che imposti il ​​titolo in questo passaggio.
  3. (Passaggio facoltativo) Aggiungere i pulsanti destro / sinistro (istanze di UIBarButtonItem) all'elemento della barra di navigazione.

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 .


6

Scrivi il codice sotto viewDidLoado potrebbe essere meglio sottoinitWithNibName:

  self.navigationItem.title = @"title";

Grazie.


6

Puoi anche usare 👇🏻

[self.navigationController.navigationBar.topItem setTitle:@"Titlet"];

2

Questo codice non ha funzionato per me

self.navigationItem.title = @"Title here";

Ma questo ha funzionato.

self.title = "Title Name"

2

Nel viewDidLoad del tuo UIViewController

self.navigationItem.title = "The title";  //In swift 4

o

puoi solo

self.title = "The title"

farà il trucco

puoi anche inserire la dichiarazione precedente nel delegato dell'app per replicare a livello globale.


0

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";

0

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


0

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 topItemquindi potresti volerlo aggiornare in questo modo:(self.navigationController?.navigationBar.topItem?.titleView as? UILabel)?.text = "My Happy New Title"

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.