У меня есть панель навигации в представлении, и я хочу программно изменить ее заголовок элемента навигации.
Как это сделать?
Ответы:
В viewDidLoad
self.title = @"Title";
Из документации Apple :
Наиболее распространенный способ использования панели навигации - с помощью контроллера навигации. Вы также можете использовать панель навигации как отдельный объект в своем приложении.
Итак, если у вас есть UINavigationController, все, что вам нужно сделать, чтобы установить заголовок панели навигации (как описано во всех предыдущих ответах)
self.navigationItem.title = @"title";
Но если у вас есть автономная панель навигации, которая создается программно в объекте UIViewController, вы должны установить начальный внешний вид панели навигации, создав соответствующие объекты UINavigationItem и добавив их в стек объектов панели навигации, т.е.
Пример кода Objective-C для указанных шагов:
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];
Для Swift-версии автономной панели навигации ознакомьтесь с этим ответом .
Напишите приведенный ниже код viewDidLoad
или, возможно, лучше будет подinitWithNibName:
self.navigationItem.title = @"title";
Благодарю.
Вы также можете использовать 👇🏻
[self.navigationController.navigationBar.topItem setTitle:@"Titlet"];
Используйте его в методе ViewDidLoad
Формат:
@property(nonatomic,readonly,retain) UINavigationItem *navigationItem; // Created on-demand so that a view controller may customize its navigation appearance.
Пример :
self.navigationItem.title = @"Title here";
очень важное примечание: убедитесь, что вы внесли изменения, упомянутые выше, в методе viewDidLoad контроллера родительского представления или в родительской панели навигации в раскадровке
Иногда вы можете столкнуться с ситуацией, когда вы обновляете заголовок, и это не вызывает никакого эффекта, это может быть, когда у вас есть настраиваемый вид, topItem
поэтому вы можете обновить его следующим образом:(self.navigationController?.navigationBar.topItem?.titleView as? UILabel)?.text = "My Happy New Title"