我收到了像*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'The NIB data is invalid.'
对于iOS 5.0
即使我取消选中AutoLayout并为自定义单元格的所有iOS版本提供部署支持。
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CustomCellIdentifier = @"GroupListCell";
GroupListCell *cell = (GroupListCell *)[tableView dequeueReusableCellWithIdentifier: CustomCellIdentifier];
if (cell == nil)
{
NSArray *nib;
if(UI_USER_INTERFACE_IDIOM()==UIUserInterfaceIdiomPad)
{
nib= [[NSBundle mainBundle] loadNibNamed:@"GroupListCell" owner:self options:nil];
}
else{
nib= [[NSBundle mainBundle] loadNibNamed:@"GroupListiPhoneCell" owner:self options:nil]; // sigabrt
}
// cell implementation code..
}
}
此代码适用于iOS6.0但不适用于iOS 5.0 问题是什么?我错过了什么。
答案 0 :(得分:15)
使用下图中设置的值检查nib文件
同时检查UILabel
UIButton
文字
答案 1 :(得分:4)
某段时间AutoLayout
也可能导致问题。因此,请使用xib文件 - 检查器窗格 - 取消勾选autolayout
。
答案 2 :(得分:2)
最后我发现了这个问题。
我的单元格中有一个textview,即使Text属性定义为“Plain”,它也归因于文本。它在“平原”中没有改变。因为手动更改文本并使用enter关键字转到下一行。在内部,它被视为“归属”。
因此,请检查TextView的text属性2次。 :)
答案 3 :(得分:1)
您的案例中可能缺少用于提取单元格的代码。希望以下更正的代码有效。
if (cell == nil)
{
NSArray *nib;
if(UI_USER_INTERFACE_IDIOM()==UIUserInterfaceIdiomPad)
{
nib= [[NSBundle mainBundle] loadNibNamed:@"GroupListCell" owner:self options:nil];
cell = [nib objectAtindex:0];
}
else{
nib= [[NSBundle mainBundle] loadNibNamed:@"GroupListiPhoneCell" owner:self options:nil]; // sigabrt
cell = [nib objectAtindex:0];
}
// cell implementation code..
}
答案 4 :(得分:1)
对于较低版本的iOS 6,可能会发生这种情况。
解决这个问题
选择故事板然后
在File Inspector
- > Interface Builder Document
取消选中Use Auto Layout
和
在File Inspector
- > Localization
取消选中Base
并检查English