Как установить название панели навигации программно?


У меня есть панель навигации в представлении, и я хочу изменить ее название элемента навигации программно.

Как это сделать?

10 59

10 ответов:

в вашем UIViewController

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

Swift 3 Версия:

Если вы используете панель навигации без навигационного контроллера, то вы можете попробовать это:

navigationBar.topItem?.title = "Your Title"

надеюсь на помощь.

в viewDidLoad

  self.title = @"Title";

напишите ниже код в viewDidLoad или может быть лучше будет, под initWithNibName:

  self.navigationItem.title = @"title";

спасибо.

С Документация Apple:

наиболее распространенный способ использования панели навигации-это навигация контроллер. Вы также можете использовать панель навигации в качестве отдельного объекта в вашем приложении.

Итак, если у вас есть UINavigationController, все, что вам нужно сделать, чтобы установить заголовок панели навигации (как описано во всех предыдущих ответах)

self.navigationItem.title = @"title";

но если у вас есть автономная панель навигации, которая создается программно в объекте UIViewController вы должны установить начальный внешний вид панели навигации, создав соответствующие объекты UINavigationItem и добавив их в стек объектов панели навигации, т. е.

  1. создать экземпляр панели навигации (UINavigationBar)
  2. создайте экземпляр элемента панели навигации (UINavigationItem), который управляет кнопками и представлениями, отображаемыми в объекте UINavigationBar. Обратите внимание, что название в этот шаг.
  3. (необязательный шаг) добавьте кнопки вправо/влево (экземпляры UIBarButtonItem) в элемент панели навигации.

пример кода 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 версии автономной панели навигации, проверьте ответ.

You can also use 
[self.navigationController.navigationBar.topItem setTitle:@"Titlet"];

этот код не работает для меня

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

но это сработало.

self.title = "Title Name"

используйте его в методе 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"