1

当我尝试对自定义单元格使用以下编码时,它显示错误。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *simpleTableIdentifier = @"SimpletablcellCell";
    SimpletablcellCell *cell = (SimpletablcellCell *)[tableView dequeueReusableCellWithIdentifier:simpleTableIdentifier];
    if (cell == nil)
    {
        NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"SimpletablcellCell" owner:self options:nil];
        cell = [nib objectAtIndex:0];
    }

    cell.nameLabel.text = [ar objectAtIndex:indexPath.row];
    cell.thumbnailImageView.image = [UIImage imageNamed:[ar1 objectAtIndex:indexPath.row]];
    cell.prepTimeLabel.text = [ar objectAtIndex:indexPath.row];

    return cell;
}

错误信息

'NSInternalInconsistencyException', reason: 'Could not load NIB in bundle: 'NSBundle </Users/apple/Library/Application Support/iPhone Simulator/6.0/Applications/FE02B3A1-C40C-4FAC-BBA6-B245350F3754/SImpleTab.app> (loaded)' with name 'SimpletablcellCell''
 *** First throw call stack:
(0x1c8f012 0x10cce7e 0x1c8edeb 0x22ffac 0x23198d 0x3418 0xcef4b 0xcf01f 0xb780b 0xc819b 0x6492d 0x10e06b0 0x228bfc0 0x228033c 0x228beaf 0x1038cd 0x4c1a6 0x4acbf 0x4abd9 0x49e34 0x49c6e 0x4aa29 0x4d922 0xf7fec 0x44bc4 0x44dbf 0x44f55 0x4df67 0x2d40 0x117b7 0x11da7 0x12fab 0x24315 0x2524b 0x16cf8 0x1beadf9 0x1beaad0 0x1c04bf5 0x1c04962 0x1c35bb6 0x1c34f44 0x1c34e1b 0x127da 0x1465c 0x29fd 0x2925)
libc++abi.dylib: terminate called throwing an exception

请检查,这段代码有什么问题?

4

5 回答 5

17

.nib / .xib 是否存在于您名为 的项目中SimpletablcellCell?名字可能有错别字,请仔细检查。

确保该文件是您的目标的一部分。您可以通过在 Xcode 中打开右侧菜单来检查这一点。例子:

文件目标设置

如果单元存在,它是否在构建过程中被复制?检查项目目标构建设置中的“复制捆绑资源”阶段,并确保它正在被复制。如果没有,请将文件手动添加到此阶段。

于 2013-02-07T13:23:23.557 回答
7

将 Cocoapods 用于我的私人 pod 库时,我遇到了这个问题。

我错误地将我的 xib 文件包含在 s.source_files 中,就像这样

s.source_files =  'MyLibrary/**/*.{h,m,xib}' //DOES NOT WORK

解决方案是使用资源属性:

s.resources = 'MyLibrary/**/*.{xib}'        //PROBLEM SOLVED
s.source_files =  'MyLibrary/**/*.{h,m}'

...

如果您的 podspec 正在寻找上面 s.resources 指定的 xib,但 xib 不在该路径中,则会出现问题。

一旦我错误地将 xib 添加到我的根项目目录(您的 AppDelegate 所在的位置),因此 Cocoapods 不会将其复制到使用该 pod 的任何客户端。

我通过更改 s.resources 路径或移动 xib 使其位于 s.resources 路径中来解决此问题。

于 2013-07-12T04:50:33.330 回答
4

如果您使用以下方法注册笔尖:

let nib: UINib = UINib(nibName: "myNib", bundle: nil)
tableView.registerNib(nib, forCellReuseIdentifier: "myCell")

确保它在viewDidLoad()函数中完成。我已将它放在init()函数中并收到此错误。一旦转移到viewDidLoad(),它工作得很好。

于 2016-08-21T13:20:32.723 回答
1

当您在 XCode 之外重命名某些文件时,可能会发生此错误。要解决它,您只需从项目中删除文件(右键单击 - 删除和“删除引用”)您重新导入项目中的文件,一切都会好起来的!

于 2013-02-07T13:14:03.687 回答
0
  1. 确保将您的自定义单元格添加到您正在构建的目标中。成功注册该单元格。
  2. xib 中应该没有 IBOutlet 错误。此外,将视图连接到文件所有者。
  3. 常见错误可能是您正在加载的笔尖名称不正确。
于 2019-08-27T06:21:17.263 回答