IPhone: настройка заголовка панели навигации

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

viewController.title = @"title text";

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

Спасибо!

Ответ 1

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

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

или

bar.topItem.title = @"title text";

Ответ 2

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

что-то вроде этого:

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

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

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

Ответ 3

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

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

self.navigationItem.title = @"MyTitle";

Ответ 4

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

self.navigationController.topViewController.title = @"info";

Ответ 5

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

-(void)viewDidAppear:(BOOL)animated {
    self.navigationController.navigationBar.topItem.title = @"myTitle";
}

Ответ 6

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

myViewController.navigationItem.title = @"MyTitle";

Ответ 7

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

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

navController.navigationBar.topItem.title = @"Test";

Ответ 8

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

[email protected]"title";

Ответ 9

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

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

Ответ 10

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

Ответ 11

Я думаю, вам нужен динамический заголовок, поэтому вы не устанавливаете его в IB.

И я предполагаю, что ваш объект viewController указан в NIB?

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

Ответ 12

Внутри TableViewController.m

self.navigationController.navigationBar.topItem.title= @ "Blah blah Some Amazing title";

Ответ 13

Для всех ваших Swift-щиков, это отлично сработало для меня. Это, в частности, один из более коротких способов выполнить настройку заголовка:

override public func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
  if segue.identifier == "presentLineItem" {
    print("Setting Title")
    var vc = segue.destinationViewController as! LineItemsTableViewController
    vc.navigationItem.title = "Line Item"
  }
}

Ответ 14

Что сработало для меня, было self.titleLabel.text = @"New Title";