如何正确设置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的类中进行设置。
- 制作另一个属性并让该类设置它。
- 在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是使用一个类而不是一个子类
如果你的UIViewController
是UITabController
一部分,那么你可以这样做:
self.tabBarController.title = sub.title;