14

次のクラッシュが発生しています。

キャッチされない例外 'NSInternalInconsistencyException' が原因でアプリを終了しています。理由: '種類のビューをデキューできませんでした: 識別子セルを持つ UICollectionElementKindCell - 識別子の nib またはクラスを登録するか、ストーリーボードのプロトタイプ セルを接続する必要があります'

ViewDidLoad には次のものがあります。

[self.collectionView registerClass:[UICollectionViewCell class] 
        forCellWithReuseIdentifier:@"Cell"];

クラッシュする行は cellForItemAtIndexPath コールバックにあります。

UICollectionViewCell *cell = [collectionView 
    dequeueReusableCellWithReuseIdentifier:@"Cell" forIndexPath:indexPath];

私は何時間も探していましたが、解決策が見つかりません。UICollectionViewCell をサブクラス化しようとしましたが、同じエラーが発生します。

ブレークポイントを使用すると、dequeueReusableCellWithReuseIdentifier コールバックが実行される前に registerClass 行が実行されていることがわかりました。

4

4 に答える 4

15

テーブルビューオブジェクトをインスタンス化する前にregisterClass を呼び出していたため、この問題が発生しました。作業コード:

self.tableView = [[UITableView alloc] initWithFrame:self.view.frame];
[self.tableView registerClass:[UITableViewCell class] forCellReuseIdentifier:@"Cell"];
[self.view addSubview:self.tableView];
self.tableView.delegate = self;
self.tableView.dataSource = self;
[self.tableView reloadData];
于 2013-10-26T10:20:15.610 に答える
4

また、セル (登録... forCellWithReuseIdentifier) と補足ビュー (登録... forSupplementaryViewOfKind) の違いを忘れないでください。

補足(ヘッダー/フッター)タイプで正しくデキューしていたのですが、誤ってセルタイプとして登録してしまいました。当たり前。

于 2014-09-05T16:12:08.700 に答える
1

UICollectionViewControllerまたはでこれを経験した場合はUITableViewController、rob mayoff が言ったことに従って、Collection ViewまたはTable Viewがストーリーボードのプロパティに接続されていることを確認してください。

CollectionIDもう 1 つのよくある間違いは、ストーリーボードで右または右を付け忘れたことですCellID

于 2014-03-07T01:06:31.873 に答える
0

コレクション ビュー セルに取り組んでいたとき、次のように書きました。

static NSString *identifier = @"cell "; 

注意深く見ると、識別子文字列の末尾に余分なスペースがあることがわかります。私の間違いに気づいた後、これが誰かの役に立てば幸いです。

参照:

種類のビューをデキューできませんでした: 識別子を持つ UICollectionElementKindCell

于 2014-08-26T19:11:56.117 に答える