如何正确设置UIViewController的navigationController标题?

我正在尝试下面的代码:

- (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的标题,而不是。

 thing.navigationItem.title = sub.title; 

或在viewDidLoad方法中的StoriesViewController.m文件中:

 self.navigationItem.title = sub.title 

标题需要在viewDidLoad中(或之后)设置,所以如果你想从另一个创buildStoriesViewController的类中进行设置。

  1. 制作另一个属性并让该类设置它。
  2. 在StoriesViewController的viewDidLoad ,设置该属性的标题。

这是因为直到viewDidLoad之前,网点才被初始化为它们的视图对象。

它看起来像StoriesViewController是坚持子(是否initWithThing设置一个属性呢?)如果是这样,只需将viewDidLoad中的标题设置为Thing属性的标题。

你可能会推送一个UITabBarController而不是常规的视图控制器。 在这种情况下,navigationItem将显示当前控制器的标题,标签栏控制器,即使您看到另一个视图。 您将不得不更改标签栏控制器的标题以更改上面显示的文本。

 self.tabBarController.title = @"Your title"; 
 [thing setTitle: sub.title]; 

解决scheme是thing.navigationItem.title = @"title"; 但事实certificate,子类UINavigationController打破了它,我的解决scheme是使用一个类而不是一个子类

如果你的UIViewControllerUITabController一部分,那么你可以这样做:

 self.tabBarController.title = sub.title;