W widoku mam pasek nawigacji i chcę programowo zmienić tytuł elementu nawigacji.
Jak to się robi?
Odpowiedzi:
W widokuDidLoad
self.title = @"Title";
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.
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ź .
Napisz poniższy kod w viewDidLoad
lub może lepiej byłby podinitWithNibName:
self.navigationItem.title = @"title";
Dzięki.
Możesz także użyć 👇🏻
[self.navigationController.navigationBar.topItem setTitle:@"Titlet"];
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";
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
Czasami może się zdarzyć, że aktualizujesz tytuł i nie powoduje to żadnego efektu, może to mieć miejsce, gdy masz niestandardowy widok na, topItem
dlatego możesz chcieć zaktualizować go w ten sposób:(self.navigationController?.navigationBar.topItem?.titleView as? UILabel)?.text = "My Happy New Title"