我的iPhone应用程序运行正常。我在我的xib文件中添加了一个组件(一个活动指示器)。我已经创建了自己的init方法,并在init方法中使用了XIB名称。现在,当我执行pushViewController
时,我收到此错误Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: '-[UIViewController _loadViewFromNibNamed:bundle:] loaded the "ModelThumbnailView" nib but the view outlet was not set.'
我知道,当viewcontroller未映射到xib中的视图时,通常会出现这种情况。但所有映射都很好。我甚至删除了类和xib并再次创建它们。 init方法也没有返回nil。但是一旦我用这个类的对象调用pushViewController,我仍然会得到异常。
任何想法为什么?
修改
只是调试并在调用pushViewController之前在viewcontroller中调用了一个方法。调试器显示nib名称设置正确,bundle是nil(因为这是通过的)但视图也是nil。不明白为什么!!!
**发布代码以防有害**
MyThumbnailViewController *modCont = [[[MyThumbnailViewController alloc] initWithNibName:@"MyThumbnailView" bundle:nil] autorelease];
[modCont setImgName:imgName count:numOfValues andIndex:0];
[[self navigationController] pushViewController:modCont animated:YES]; //This gives the exception
这是MyThumbnailViewController类的viewDidLoad。控制永远不会到达
- (void)viewDidLoad {
self.navigationItem.title = imageName;
self.navigationItem.hidesBackButton = NO;
[[self navigationController] setNavigationBarHidden:NO];
}
我删除了自定义init方法,但仍然遇到了同样的错误。
解决
刚刚再创造了整件事,现在它工作得很好,虽然我没有看到这两件事有任何不同!
答案 0 :(得分:0)
我确定你已经尝试了这个,但为了防止在调用方法之前在该位置设置断点以处理pushView并逐步执行代码以查看异常被抛出的位置。这有时会有所帮助我稍后会回来看看你发现了什么,看看我是否能提供更多的帮助。
答案 1 :(得分:0)
听起来很奇怪,但为了安全起见,请再次仔细检查以下内容: 打开IB并选择文件所有者。然后在Identity Inspector中确保 类设置为自定义视图控制器。打开Connections Inspector和 确保视图Outlet连接到NIB中的View(这是异常抱怨的内容)。
保存XIB文件并关闭IB。然后在XCode中选择Build-> Clean All Targets 并尝试运行您的应用。
我看过IB和XCode不止一次分开,我热切地编辑了视图 在IB中,我的应用程序永远不会加载因为我没有将它们添加到我的项目中 事故。所以我能感受到你的痛苦: - )
答案 2 :(得分:0)
我得到了同样的错误 - 在我四处寻找后,我将VIEW OUTLET(在文件所有者中)重新连接到VIEW CONTROLLER中的VIEW(我刚刚连接到VIEW屏幕的主要部分 - 抱歉,我对这一切都很新,所以我我确定我没有用正确的名称来称呼这些东西)并修复了它。它曾经有过工作,但我所做的事情必定已经打破了这个环节。
FogCityFun