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を使用しているときにこの問題が発生しました。

私は自分のxibファイルをs.source_filesに誤って含めていました

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

解決策は、resources属性を使用することでした。

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

..。

次に、podspecが上記のs.resourcesで指定されたxibを探しているが、xibがそのパスにない場合に発生する問題があります。

ルートプロジェクトディレクトリ(AppDelegateがある場所)に誤ってxibを追加したため、Cocoapodsはポッドを使用しているクライアントにxibをコピーしませんでした。

これを修正するには、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 に答える