2012-01-04 67 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"; 
} 
相關問題