簡體   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