Xcode 4.5破坏了XIB?

时间:2012-06-21 12:00:25

标签: xcode exception uitableview xib nib

我正在使用新的xcode 4.5, 我在一些视图控制器上有这行代码:

DiscoverCell* cell=[table dequeueReusableCellWithIdentifier:@"DiscoverCell"];
if(cell==nil){
    NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"DiscoverCell" 
                                                 owner:self 
                                               options:nil];
    cell = [nib objectAtIndex:0];
} 

当我运行应用程序时抛出:由于未捕获的异常'NSInternalInconsistencyException'而终止应用程序,原因:'NIB数据无效。' 在LoadNib行上, 那是什么?这个xcode是不是苹果垃圾?

8 个答案:

答案 0 :(得分:71)

我遇到了同样的问题并通过取消选中“实用工具”中“文档检查器”窗格中的“使用Autolayout”复选框来修复它。

答案 1 :(得分:59)

取消选中下图中突出显示的“使用Autolayout”。默认情况下,Xcode 4.5为您添加到项目中的新nib文件启用此属性。取消选中autolayout复选框解决了问题

答案 2 :(得分:8)

我刚遇到这个问题,并将其追踪到UIButton,该标题字段在属性检查器中设置为Attributed。将此更改为Plain可解决此问题。如果我没记错的话,我在Xcode的最后一个版本中添加了这个按钮,然后也遇到了麻烦。

答案 3 :(得分:6)

对我而言,这是Jason Coco的评论和tomgerhardt的答案的组合:我的应用程序针对iOS5,我升级到Xcode 4.5并创建了一个新的NIB。默认情况下,这个目标iOS6,导致崩溃。我在NIB的文件检查器窗口中将其设置为iOS5。

然后我收到编译错误,告诉我iOS5不支持使用Autolayout,转为文档检查器中的问题,我的问题已修复。

答案 4 :(得分:4)

我正在使用Xcode 4.5和iPhone模拟器5.0,并在显示第一个表时出现同样的错误。在“取消选中autolayout”建议之后,我通过将文档版本控制切换到iOS 5.0来实现它。 (选择了故事板 - >文件识别选项卡 - >界面生成器文档 - >文档版本控制。)已取消选择AutoLayout。

答案 5 :(得分:2)

所以,经过大约一个小时的努力解决这个问题,我发现了问题。确实如上所述:确保您的.xib设置为与您的主应用程序所针对的相同的目标版本(在这种情况下,很可能是<6.0),并在选项中取消选中“Use Autolayout”这个特别的.xib。

它在模拟器中工作的原因是因为你的模拟器实际上运行的是iOS6。尝试使用旧版iOS的设备时,会导致此错误。我的问题是,我正在创建一个自定义的TableViewCell,默认情况下是针对iOS 6并且选中了“使用Autolayout”。这是我的罪魁祸首。

希望我能够帮助那些人因为这个错误而感到悲伤!

答案 6 :(得分:2)

禁用所有.xib文件的自动布局后,我仍然遇到错误。 这是因为我使用了Text - &gt;归因于.xib文件中的UILabel。

将其设置为Plain后,错误消失了。

答案 7 :(得分:0)

“loadNibNamed:”之后的名称必须是nib文件的名称(在屏幕左侧的项目导航器中),有时人们会在那里写入“Cell identifier”,从CellForRowAtIndexPath(静态NSString)开始写入。 ..)。

这个小错误可能是你的问题吗?