2011-03-09 71 views
1

我在UINavigationController內有UIViewController,並且我正在從XIB文件推入第二個UIViewController到導航堆棧。此XIB還包含用於第二個視圖控制器的標題和按鈕的UINavigationItem,但加載XIB時會忽略它們。有任何想法嗎?iPhone - 從xib加載視圖控制器時忽略UINavigationItem

這裏是我的代碼(photoViewController是第二的viewController)

- (void) displayPhotoWithId:(int)photoId { 

    if (_photoViewController == nil) { 
     self.photoViewController = [[[PhotoViewController alloc] initWithNibName:@"PhotoView" bundle:[NSBundle mainBundle]] autorelease];   
    } 

    _photoViewController.photoId = photoId; 

    [self.navigationController pushViewController:_photoViewController animated:YES]; 

} 

回答

0

導航項目被忽略,因爲它沒有任何與此控制器,它正好是在這個控制器的XIB。控制器的導航項目是在實例化時創建的。您必須在代碼中設置標題和導航按鈕(例如,在viewDidLoad中),因爲控制器沒有navigationItem插座。 UIB中的UINavigationItem只能在UINavigationController的根控制器中使用。

+0

謝謝hoha。那麼在這裏沒有辦法從Interface Builder使用UINavigationItem? – Greenwell 2011-03-09 20:57:41

+0

有沒有我害怕。它與控制器中的視圖加載順序有關。我忘了它是什麼,但現在UINavigationItem只是不能從XIBs工作。 – hoha 2011-03-09 22:14:11

3

您可以通過界面構建​​器連線。加入這樣的事情您的視圖控制器:

IBOutlet UINavigationItem* navigationItem; 

再用鋼絲它的視圖控制器出口(從文件所有者,據推測,在你的XIB的UINavigationItem)。我已經做到了這一點,它工作正常。我想UINavigationController自動尋找'navigationItem'。

+1

如果您的控制器的視圖在您將其添加到UINavigationController之前被加載,這將起作用。 – Sulthan 2011-11-07 16:28:39

+0

與Sulthan達成一致 - 所以如果你的根控制器從XIB載入它的navigationItem,它將會崩潰。建議使用Storyboard或在代碼中進行。 – Chilv 2014-09-29 15:03:50

相關問題