Xcode 4.5破坏XIBs?

我正在使用新的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]; } 

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

取消选中下图中高亮显示的“使用Autolayout”。 Xcode 4.5默认启用这个属性,用于添加到项目中的新的nib文件。 取消选中自动布局checkbox解决了这个问题

我有这个相同的问题,并通过取消选中实用工具中文档检查器窗格上的“使用Autolayout”checkbox来修复它。

我刚刚遇到了这个问题,并将其追踪到属性检查器中标题字段设置为“已分配”的UIButton。 将其更改为Plain可以解决问题。 如果我没有记错的话,我在Xcode的最后一个版本中添加了这个button,并且也遇到了麻烦。

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

然后我得到一个编译器错误,告诉我使用Autolayout不支持iOS5,在文档检查器中打开它,我的问题已修复。

我正在使用Xcode 4.5和iPhone模拟器5.0,并显示第一个表时,这同样的错误。 在“取消select自动布局”的build议之后,我通过将文档版本控制切换到iOS 5.0来解决这个问题。 (故事板select – >文件标识选项卡 – >接口生成器文档 – >文档版本。)AutoLayout已被取消select。

所以,大概一个小时后,我就明白了这个问题。 确实如上所述:确保您的.xib被设置为与您的主应用程序编写的相同的目标版本(在这种情况下,最可能是<6.0),并取消选中此选项中的“使用Autolayout”特别是.xib。

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

希望我能够拯救一个人在那里的悲痛,我被通过这个错误!

禁用所有我的.xib文件的自动布局后,我仍然有错误。 这是因为我使用文本 – >归因于.xib文件中的UILabel。

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

“loadNibNamed:”后面的名称必须是nib文件的名称(在屏幕左侧的项目导航器中),有时候人们会在其中写入从CellForRowAtIndexPath(静态NSString …)开始写入的“单元标识符” 。

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