繁体   English   中英

自定义单元的UITableView错误“无法在捆绑包中加载NIB:”

[英]UITableView error “Could not load NIB in bundle:” for custom cell

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

- (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

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

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

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

文件目标设置

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

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

我将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路径中来解决此问题。

当您重命名XCode之外的某些文件时,可能会发生此错误。 要解决该问题,您只需从项目中删除文件(右键单击-删除和“删除引用”),然后将文件重新导入项目中,一切就可以了!

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

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

确保在viewDidLoad()函数中完成此操作。 我将其放在init()函数中并收到此错误。 一旦移至viewDidLoad() ,它就会很好地工作。

  1. 确保将自定义单元添加到要构建的目标。 毫无疑问地注册该单元。
  2. xib中应该没有IBOutlet错误。 另外,将视图连接到文件所有者。
  3. 常见的错误可能是您正在加载的笔尖的名称不正确。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM