iPhone - 从xib加载视图控制器时忽略UINavigationItem
问题描述:
我在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];
}
答
导航项目被忽略,因为它没有任何与此控制器,它正好是在这个控制器的XIB。控制器的导航项目是在实例化时创建的。您必须在代码中设置标题和导航按钮(例如,在viewDidLoad
中),因为控制器没有navigationItem
插座。 UIB中的UINavigationItem只能在UINavigationController的根控制器中使用。
答
您可以通过界面构建器连线。加入这样的事情您的视图控制器:
IBOutlet UINavigationItem* navigationItem;
再用钢丝它的视图控制器出口(从文件所有者,据推测,在你的XIB的UINavigationItem
)。我已经做到了这一点,它工作正常。我想UINavigationController
自动寻找'navigationItem'。
谢谢hoha。那么在这里没有办法从Interface Builder使用UINavigationItem? – Greenwell 2011-03-09 20:57:41
有没有我害怕。它与控制器中的视图加载顺序有关。我忘了它是什么,但现在UINavigationItem只是不能从XIBs工作。 – hoha 2011-03-09 22:14:11