Изменить заголовок панели навигации программно - PullRequest
4 голосов
/ 08 апреля 2009

Я работаю с шаблоном Xcode Utility. В rootViewController.m есть раздел, который устанавливает панель навигации для того, что называется FlipSideView:

(надрез)

UINavigationItem *navigationItem = [[UINavigationItem alloc] initWithTitle:@"Title"];

(надрез)

Как программно изменить заголовок панели навигации из класса FlipsideViewController? Я попробовал:

self.navigationItem.title = @"XXXXXX";

без успеха.

Ответы [ 6 ]

8 голосов
/ 06 мая 2011

Хорошо, я потратил некоторое время на это, потому что я хочу использовать удобство макета NIB для приложения-шаблона утилит, но я хочу иметь возможность интернационализации без поддержки gazillion nibs.

Итак, первое, что нужно добавить в класс FlipViewController:

IBOutlet UINavigationBar *navBarItself;

Затем в IB нужно перетащить элемент управления с панели навигации к владельцу файла и подключиться к navBarItself в владельце файла.

Затем код:

- (void) viewWillAppear:(BOOL) animated {

    [super viewWillAppear:animated];

    navBarItself.topItem.title = @"Peace!!";
}

и это похоже на заклинание

(и это также работает при добавлении в ViewDidLoad)

(p.s. Другие ответы, показанные здесь, не работали для меня)

4 голосов
/ 08 апреля 2009

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

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

Как вы показываете свою точку зрения? Вот как один из моих ViewControllers (tableView) представляет другой (detailView)

[self.navigationController pushViewController:detailController animated:YES];
0 голосов
/ 04 октября 2012

Вы можете установить заголовок FlipSideViewController для установки заголовка в контроллере навигации, в то время как FlipSideViewController является topViewController. В FlipSideViewController:

self.title = "Flip Side";

Я не уверен точно, как устроен этот проект, но я думаю, что это то, о чем вы говорите.

0 голосов
/ 19 марта 2011

IIRC, каждый подкласс UIViewController имеет свойство «title», которое содержит текст, отображаемый в заголовке панели навигации. Таким образом, установка self.title = @"Foobar"; в -viewDidLoad или -viewWillAppear: animated: должна помочь.

0 голосов
/ 13 апреля 2009

Если ваша ссылка ноль, проверьте ваши соединения в IB.

0 голосов
/ 08 апреля 2009

Ответ Джесси должен сработать, но, так как у вас все еще возникают проблемы, одним из первых мест, которые нужно проверить, является ссылка на элемент навигации.

Попробуйте отладить ваше приложение с точкой останова на этой строке и проверьте ссылку. Скорее всего, звонок не происходит, потому что ссылка ноль.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...