2010-08-01 3 views
5

Я пытаюсь следующий код:Как правильно установить заголовок навигации навигации UIViewController?

- (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.

+0

Более подробно обсуждается здесь: http://stackoverflow.com/questions/2280710/iphone-setting-navigation-bar-title –

ответ

14
thing.navigationItem.title = sub.title; 

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

self.navigationItem.title = sub.title 
+0

thing.navigationItem.title не работает, я попытался его до и после того, как я нажимаю ViewController без везения. –

+0

установить его в viewDidLoad метод вашего contoroller – jamapag

+2

Привет, я попробовал self.navigationController.title = @ "Регистрация"; В чем разница? он не работает – OMGPOP

1

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

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

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

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

+0

Кажется не работает, хотя ваши рассуждения имеют смысл. –

0

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

0

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

self.tabBarController.title = sub.title; 
1

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

self.tabBarController.title = @"Your title"; 
Смежные вопросы