Jak programowo ustawić tytuł paska nawigacji?

84

W widoku mam pasek nawigacji i chcę programowo zmienić tytuł elementu nawigacji.

Jak to się robi?

Doug Null
źródło

Odpowiedzi:

204

W Twoim UIViewController

self.navigationItem.title = @"The title";
arclight
źródło
Tak, wybrałbym tę opcję, ponieważ aktualizuje tylko tytuł navigationItem, a nie tytuł toolbarItem.
Prakash Raman
30

Wersja Swift 3:

Jeśli używasz paska nawigacji bez kontrolera nawigacji, możesz spróbować tego:

navigationBar.topItem?.title = "Your Title"

Mam nadzieję na pomoc.

Jerome
źródło
11

W widokuDidLoad

  self.title = @"Title";
Madhu
źródło
3
Moje dwa centy :) To działa, chociaż vewcontroller jest częścią toolbarcontroller. Następnie tytuł paska narzędzi również zostanie zaktualizowany.
Prakash Raman
7

Z dokumentacji Apple :

Najpopularniejszym sposobem korzystania z paska nawigacji jest użycie kontrolera nawigacyjnego. Możesz również użyć paska nawigacji jako samodzielnego obiektu w swojej aplikacji.

Więc jeśli masz kontroler UINavigationController, wszystko, co musisz zrobić, aby ustawić tytuł paska nawigacji (jak wyjaśniono we wszystkich poprzednich odpowiedziach)

self.navigationItem.title = @"title";

Ale jeśli masz samodzielny pasek nawigacyjny, który jest tworzony programowo w obiekcie UIViewController, musisz ustawić początkowy wygląd paska nawigacji, tworząc odpowiednie obiekty UINavigationItem i dodając je do stosu obiektów paska nawigacji, tj.

  1. Utwórz wystąpienie paska nawigacji (UINavigationBar)
  2. Utwórz wystąpienie elementu paska nawigacji (UINavigationItem), który zarządza przyciskami i widokami, które mają być wyświetlane w obiekcie UINavigationBar. Zwróć uwagę, że ustawiłeś tytuł w tym kroku.
  3. (Krok opcjonalny) Dodaj przyciski w prawo / w lewo (wystąpienia UIBarButtonItem) do elementu paska nawigacyjnego.

Przykład kodu Objective-C dla wymienionych kroków:

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

W przypadku wersji Swift samodzielnego paska nawigacyjnego sprawdź tę odpowiedź .

Wael Showair
źródło
6

Napisz poniższy kod w viewDidLoadlub może lepiej byłby podinitWithNibName:

  self.navigationItem.title = @"title";

Dzięki.

Nikhil Bansal
źródło
6

Możesz także użyć 👇🏻

[self.navigationController.navigationBar.topItem setTitle:@"Titlet"];
Surjeet Rajput
źródło
2

Ten kod nie działa dla mnie

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

Ale to zadziałało.

self.title = "Title Name"
Prasad A
źródło
2

W widoku UIViewControllerDidLoad

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

lub

możesz po prostu

self.title = "The title"

da rade

możesz również umieścić powyższą instrukcję w delegacie aplikacji, aby replikować globalnie.

NickCoder
źródło
0

Użyj go w metodzie ViewDidLoad

Format:

@property(nonatomic,readonly,retain) UINavigationItem *navigationItem; // Created on-demand so that a view controller may customize its navigation appearance.

Przykład:

self.navigationItem.title = @"Title here";
Jayprakash Dubey
źródło
0

bardzo ważna uwaga: upewnij się, że wprowadziłeś zmiany, o których mowa powyżej w widoku nadrzędnym metoda viewDidLoad kontrolera lub pasek nawigacji rodziców w scenorysie

smoothumut
źródło
0

Czasami może się zdarzyć, że aktualizujesz tytuł i nie powoduje to żadnego efektu, może to mieć miejsce, gdy masz niestandardowy widok na, topItemdlatego możesz chcieć zaktualizować go w ten sposób:(self.navigationController?.navigationBar.topItem?.titleView as? UILabel)?.text = "My Happy New Title"

Hola Soy Edu Feliz Navidad
źródło