iPhone: настройка заголовка панели навигации - PullRequest
84 голосов
/ 17 февраля 2010

Привет всем. Я все еще довольно новичок в разработке для iPhone, и у меня возникли проблемы с поиском, как изменить название моей панели навигации. На другой вопрос на этом сайте кто-то рекомендовал использовать:

viewController.title = @"title text";

но это не работает для меня ... Нужно ли добавить UINavigationController для этого? Или, может быть, просто выход из моего подкласса UIViewController? Если это помогает, я определил панель навигации в IB, и я пытаюсь установить ее заголовок в моем подклассе UIViewController. Это еще одна из тех простых вещей, которая вызывает у меня головную боль. Putting self.title = @ "текст заголовка"; в viewDidLoad и initWithNibName тоже не работали. Кто-нибудь знает, что происходит и как правильно это сделать?

Спасибо!

Ответы [ 14 ]

153 голосов
/ 17 февраля 2010

Контроллер представления должен быть дочерним по отношению к некоторому UINavigationController, чтобы свойство .title вступило в силу. Если UINavigationBar - это просто представление, вам нужно нажать на элемент навигации, содержащий заголовок, или изменить последний элемент навигации:

UINavigationItem* item = [[UINavigationItem alloc] initWithTitle:@"title text"];
...
[bar pushNavigationItem:item animated:YES];
[item release];

или

bar.topItem.title = @"title text";
121 голосов
/ 17 февраля 2010

если вы делаете все это с помощью кода в viewDidLoad методе UIViewController, вы должны добавить только self.title = @"title text";

как то так:

- (void)viewDidLoad {
    [super viewDidLoad];
    self.title = @"title";
}

Вы также можете попробовать self.navigationItem.title = @"title";

также проверьте, не является ли ваш навигационный элемент ненулевым, и если вы установили пользовательский фон для панели навигации, проверьте, установлен ли заголовок без него.

32 голосов
/ 10 марта 2011

Есть одна проблема с использованием self.title = @"title";

Если вы используете панель навигации вместе с панелью вкладок, строка выше также меняет метку для элемента панели вкладок. Чтобы избежать этого, используйте предложенное @testing

self.navigationItem.title = @"MyTitle";
12 голосов
/ 27 августа 2013

Если вы хотите изменить заголовок навигационной панели (не заголовок кнопки возврата навигационной панели!), Этот код будет работать.

self.navigationController.topViewController.title = @"info";
9 голосов
/ 11 апреля 2013

Если вы хотите изменить заголовок navBar внутри контроллера tabBar, сделайте следующее:

-(void)viewDidAppear:(BOOL)animated {
    self.navigationController.navigationBar.topItem.title = @"myTitle";
}
5 голосов
/ 22 сентября 2010

В моем приложении на основе навигации я делаю это:

myViewController.navigationItem.title = @"MyTitle";
4 голосов
/ 29 марта 2012

У меня были контроллеры навигации, интегрированные в TabbarController.Это сработало

self.navigationItem.title=@"title";
4 голосов
/ 21 марта 2011

По умолчанию контроллер навигации отображает заголовок 'topitem'

так что в вашем методе viewdidload вашего appdelegate вы можете. Я проверил это, и он работает

navController.navigationBar.topItem.title = @"Test";
2 голосов
/ 18 февраля 2013

Если вы работаете с раскадровками, вы можете нажать на контроллер, переключиться на вкладку свойств и установить там текст заголовка.

2 голосов
/ 05 октября 2011
UINavigationItem* item = [[UINavigationItem alloc] initWithTitle:@"title text"];
...
[bar pushNavigationItem:item animated:YES];
[item release];

Этот код работал.

...