2012-01-04 53 views
1

我不知道为什么这不起作用,因为它在我的应用程序的另一个区域工作。我正在尝试显示navigationController的标题,它是popover的contentViewController。这是代码:UINavigationController在UIPopoverController中,显示标题不起作用

 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"; 

但是这并没有给我一个题目,我酥料饼。有什么想法吗? TIA。

回答

2

把这个在viewWillAppear中:动画

self.navigationItem.title = @ “目标”;

我怀疑viewDidLoad在它是UINavigationController的一部分之前在DetailView上调用,因此它可能在那时没有导航项。

+0

解决了这个问题。你能解释一下吗?我很好奇为什么它以这种方式工作,因为我在其他地方做的工作非常类似。这种情况唯一的区别是我在创建控制器时执行initWithNibName,而不是调用initWithNibName的自定义initWithTarget方法。谢谢。 – Crystal 2012-01-04 20:36:54

0

您只需设置title财产UIViewController。一旦这个控制器被拿到导航层次中,UINavigationController将把这个标题读入它自己的导航栏中。因此,不要在viewWillAppear:中解决导航控制器问题,只需将其设置在-viewDidLoad中,一切都将自动处理。

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    self.title = @"Target"; 
} 
相关问题