Как правильно установить заголовок навигационного контроллера UIViewController? - PullRequest
5 голосов
/ 01 августа 2010

Я пытаюсь следующий код:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
 Thing *sub = [[subscriptions objectAtIndex:indexPath.row] retain];
 StoriesViewController *thing = [[StoriesViewController alloc] initWithThing:sub];
 thing.navigationController.title = sub.title;
 [self.navigationController pushViewController:thing animated:YES];
 [thing release];
 [sub release];

 [tableView deselectRowAtIndexPath:indexPath animated:YES];
}

Я думал, что так вы правильно установите заголовок для нажатия на контроллер. Однако я попробовал thing.title, который устанавливал заголовок TabBarItem.

Ответы [ 6 ]

17 голосов
/ 01 августа 2010
thing.navigationItem.title = sub.title;

или в файле StoriesViewController.m в методе viewDidLoad:

self.navigationItem.title = sub.title
1 голос
/ 02 апреля 2013

Возможно, вы используете UITabBarController вместо обычного контроллера представления.В этом случае navigationItem будет отображать заголовок текущего контроллера, контроллера панели вкладок, даже если вы видите другое представление.Вам придется изменить заголовок контроллера панели вкладок, чтобы изменить текст, показанный выше.

self.tabBarController.title = @"Your title";
1 голос
/ 01 августа 2010

Заголовок должен быть установлен в (или после) viewDidLoad, поэтому, если вы хотите установить другой класс, который создает StoriesViewController.

  1. Создайте другое свойство и установите этот класс.
  2. В StoriesViewController's viewDidLoad установите заголовок из этого свойства.

Это связано с тем, что торговые точки не инициализируются в соответствии со своими аналогами до viewDidLoad.

Похоже, что StoriesViewController поддерживает sub (устанавливает ли initWithThing свойство для него?) Если это так, просто установите заголовок в viewDidLoad на заголовок свойства Thing.

0 голосов
/ 09 февраля 2012

Если ваш UIViewController является частью UITabController, то вы можете сделать:

self.tabBarController.title = sub.title;
0 голосов
/ 03 августа 2010

Решение было thing.navigationItem.title = @"title";, однако оказалось, что подкласс UINavigationController как-то сломал его, и я решил использовать категорию, а не подкласс

0 голосов
/ 01 августа 2010
[thing setTitle: sub.title];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...