iOS xib崩溃问题

错误描述:Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: '-[UIViewController _loadViewFromNibNamed:bundle:] loaded the "ServiceMoreDetailedView" nib but the view outlet was not set.'

出错场景:我在ServiceMoreDetailedViewController中,用到了与其名称有重复部分的"ServiceMoreDetailedView"作为其中一个子视图,则会出现上述崩溃现象,此时只需在ServiceMoreDetailedViewController中添加一个系统方法,返回它自己的xib文件名即可,这样就可以消除命名冲突(见方法三)。

可能引起这种错误的原因我将其归为以下三种:


原因一:

没有做nib文件到xxxViewControler程序的关联,解决方法为:

1, 打开nib文件。

2, 点击"File's Owner", 按command+4,设置Class为xxxViewControler。

3, 按Control+"Files's Owner", 里面有个默认的IBOutlet变量view, 看一下后面有没有做关联,如果没有就拉到下面的View和视图做个关联。


原因二:

可能是xcode的问题,xcode本身自带记忆功能,可能你已经修改,或者删除,但是xcode无法识别,继续用默认的,所以出上面方法以外,可以重新建立xib 并且给予不同view名字。

原因三:

这种情况确实难以察觉,即使是清理了工程缓存或者是重新创建了xib文件,更新了xib的名字,但运行的时候,还是一样会崩溃。此时我的解决办法是:在用到这个xib文件的controller中,返回这个controller自身的nib文件的名字(如果这个controller是使用xib创建的)。我的代码如下:

#pragma mark - 返回当前viewController的nibName,避免XCode自动关联类似名称的nib文件导致系统崩溃

- (NSString *) nibName {

   return  @"ServiceMoreDetailedViewController";

}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章