【问题标题】:'NSInternalInconsistencyException', reason: 'The NIB data is invalid.' for CustomCell'NSInternalInconsistencyException',原因:'NIB 数据无效。'对于自定义单元
【发布时间】:2013-02-22 06:58:14
【问题描述】:

我收到错误,例如
*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'The NIB data is invalid.'

对于iOS 5.0,即使我取消选中 AutoLayout 并为 customcell 的所有 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。
问题是什么?我错过了什么吗?

【问题讨论】:

    标签: iphone ios xcode ios5 ios6


    【解决方案1】:

    使用下图中设置的值检查 nib 文件

    检查UILabelUIButton文字也

    【讨论】:

    • 是的,它已经以这种方式设置了。我在我的问题中提到了它
    • 笔尖有标签或按钮吗?
    • 我将标签的文本设置为纯文本
    【解决方案2】:

    有时AutoLayout 也可能会导致问题。所以取 xib 文件 - 检查器窗格 - 取消勾选 autolayout

    【讨论】:

      【解决方案3】:

      终于找到问题了。

      我的单元格中有一个 textview,即使 Text 属性定义为“Plain”,它也有属性文本。它在“普通”中没有改变。因为手动更改文本并使用 enter 关键字转到下一行。在内部它被认为是“属性”。

      所以检查 TextView 的文本属性 2 次。 :)

      【讨论】:

        【解决方案4】:

        在您的情况下,可能缺少用于提取单元格的代码。希望以下更正的代码有效。

        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..
                   }
        

        【讨论】:

        • 不工作只是把 sigabrt 扔到上面,所以不要去你添加的特定行。
        • 放置一个异常断点并检查错误的确切位置
        • @Anil 我只是在代码中返回 //sigabrt 我得到错误的地方。
        • 什么时候?加载笔尖时?您检查笔尖名称是否正确?
        • 是的,我已经检查过了,它是正确的,因为它适用于 iPhone 6.0 模拟器。是的@Anil 加载笔尖时发生错误
        【解决方案5】:

        对于较低版本的 iOS 6,可能会发生这种情况。

        解决这个问题

        然后选择故事板

        File Inspector->Interface Builder Document中取消选中Use Auto Layout

        File Inspector->Localization 中取消选中Base 并选中English

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2012-11-01
          • 2015-03-06
          • 1970-01-01
          • 2012-09-25
          • 1970-01-01
          • 2013-01-09
          • 1970-01-01
          相关资源
          最近更新 更多