UINavigationBar - Установить заголовок программно? - PullRequest
77 голосов
/ 10 сентября 2010

У меня есть приложение панели вкладок с различным представлением на каждой вкладке. Каждое представление имеет UINavigationBar с заголовком, установленным в Интерфейсном Разработчике. Я хочу изменить заголовок на основе предложения в методе ViewDidLoad, поэтому, если x {изменить заголовок}.

Я пробовал self.title = @"title", но это меняет заголовок самого элемента панели вкладок.

Итак, как это сделать?

Ответы [ 10 ]

198 голосов
/ 10 сентября 2010

Я установил заголовок программно, используя код примерно так:

navBar.topItem.title = @"title";

, где navBar объявлен как IBOutlet UINavigationBar, связанный с панелью навигации в построителе интерфейса. Это работало в моем приложении; однако я не использовал панель вкладок.

Если navBar.topItem является элементом панели вкладок, я не вижу способа изменить заголовок, отображаемый на панели навигации, без изменения заголовка элемента панели вкладок, поскольку topItem navBar и вкладка Элемент бара - это тот же объект.

71 голосов
/ 13 сентября 2011

Используйте

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

как настройка navBar.topItem.title не будет работать при любых обстоятельствах.

25 голосов
/ 14 февраля 2013

Используйте это:

    CGRect navBarFrame = CGRectMake(0, 0, self.tableView.frame.size.width, 44.0);
    UINavigationBar *navBar = [[UINavigationBar alloc] initWithFrame:navBarFrame];

    UINavigationItem *navItem = [UINavigationItem alloc];
    navItem.title = @"Your Title";

    [navBar pushNavigationItem:navItem animated:false];

[self.view addSubView:navBar]; 

или

self.tableView.tableHeaderView = navBar; etc
11 голосов
/ 18 октября 2012

Если класс является типом UIViewController, вы можете установить заголовок, как указано в методе viewDidLoad.

    [self setTitle:@"My Title"];
7 голосов
/ 08 ноября 2014

В ViewDidLoad вашего ViewController.m просто напишите,

self.navigationItem.title=@"Hello World";

Вот вывод:

enter image description here

6 голосов
/ 22 марта 2012

Создать IBOutlet из UINavigationBar

navigationBar.topItem.title = @"Title";

Надеюсь, это поможет.

2 голосов
/ 18 апреля 2013

Обратите внимание, что для того, чтобы заголовок отображался ВСЕ, делегат контроллера навигации ДОЛЖЕН быть установлен на самой панели навигации, иначе заголовок НИКОГДА не будет отображаться!

2 голосов
/ 16 февраля 2012

Я использовал следующее:

self.navigationController.navigationBar.topItem.title = @"Title";

Однако мне также пришлось вызывать его в блоке отправки, поскольку он не изменил бы заголовок при вызове внутри viewDidLoad без него.

1 голос
/ 28 сентября 2014

Вы также можете просто установить заголовок в ViewDidLoad под вашим ViewController или TableViewController, используя

_title = @"Title";

или

self.title = @"Title";
0 голосов
/ 11 января 2017

Попробуйте,

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