2011-03-09 85 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

相关问题