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

时间:2010-08-01 15:31:56

标签: iphone ios uinavigationcontroller uitabbarcontroller

我正在尝试以下代码:

- (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 个答案:

答案 0 :(得分:16)

thing.navigationItem.title = sub.title;

viewDidLoad方法中的StoriesViewController.m文件:

self.navigationItem.title = sub.title

答案 1 :(得分:1)

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

  1. 创建另一个属性并让该类设置它。
  2. 在StoriesViewController的viewDidLoad中,设置该属性的标题。
  3. 这是因为在viewDidLoad之前,网点未初始化为视图对象。

    看起来StoriesViewController持有sub(initWithThing是否为它设置了属性?)如果是这样,只需将viewDidLoad中的标题设置为Thing属性的标题。

答案 2 :(得分:1)

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

self.tabBarController.title = @"Your title";

答案 3 :(得分:0)

[thing setTitle: sub.title];

答案 4 :(得分:0)

解决方案是thing.navigationItem.title = @"title";然而事实证明,子类化UINavigationController以某种方式打破了它,我的解决方案是使用类别而不是子类

答案 5 :(得分:0)

如果UIViewController属于UITabController,则可以执行以下操作:

self.tabBarController.title = sub.title;