我不确定为什么这不起作用,因为它在我的应用程序的另一个区域工作。我试图显示navigationController的标题,它是popover的contentViewController。这是代码:
DetailView* details = [[[DetailView alloc] initWithTarget:target] autorelease];
UINavigationController* content = [[[UINavigationController alloc] initWithRootViewController:details] autorelease];
self.popover = [[[UIPopoverController alloc] initWithContentViewController:content] autorelease];
[self.popover setDelegate:self];
}
[self.popover presentPopoverFromRect:frame inView:self.scrollView permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
比我的DetailView.m:
- (id)initWithTarget:(Target*)aTarget
{
self = [super initWithNibName:@"TargetDetailView" bundle:nil];
if (self) {
// Custom initialization
target = [aTarget retain];
}
return self;
}
- (void)viewDidLoad {
[super viewDidLoad];
self.navigationItem.title = @"Target";
}
我也试过
content.navigationItem.title = @"Target";
但是这并没有在我的popover中给我一个标题。有什么想法吗? TIA。
答案 0 :(得分:2)
把它放在viewWillAppear:animated
中self.navigationItem.title = @“目标”;
我怀疑viewDidLoad在它是UINavigationController的一部分之前在DetailView上被调用,因此它当时可能没有navigationItem。
答案 1 :(得分:0)
您所要做的就是设置title
的{{1}}属性。将此控制器拾取到导航层次结构后,UIViewController
会将此标题读入其自己的导航栏。因此,不要使用UINavigationController
来处理导航控制器,只需将其设置为viewWillAppear:
,一切都将自动处理。
-viewDidLoad