iPhone - 为什么我在视图映射正确时出现此错误?

时间:2009-05-01 08:54:28

标签: iphone

我的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方法,但仍然遇到了同样的错误。

解决

刚刚再创造了整件事,现在它工作得很好,虽然我没有看到这两件事有任何不同!

3 个答案:

答案 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