我正在尝试以下代码:
- (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 :(得分:16)
thing.navigationItem.title = sub.title;
或viewDidLoad
方法中的StoriesViewController.m文件:
self.navigationItem.title = sub.title
答案 1 :(得分:1)
标题需要在viewDidLoad
中设置(或之后),所以如果你想从另一个创建StoriesViewController的类进行设置。
viewDidLoad
中,设置该属性的标题。这是因为在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;