次のクラッシュが発生します。
キャッチされなかった例外 'NSInternalInconsistencyException'が原因でアプリを終了しました、理由: '種類のビューをデキューできませんでした:識別子Cellを持つUICollectionElementKindCell-識別子のペン先またはクラスを登録するか、ストーリーボードのプロトタイプセルを接続する必要があります'
ViewDidLoadには次のものがあります。
[self.collectionView registerClass:[UICollectionViewCell class]
forCellWithReuseIdentifier:@"Cell"];
そして、クラッシュする行は、cellForItemAtIndexPathコールバックにあります。
UICollectionViewCell *cell = [collectionView
dequeueReusableCellWithReuseIdentifier:@"Cell" forIndexPath:indexPath];
私は何時間も探していましたが、解決策が見つかりません。 UICollectionViewCellをサブクラス化しようとしましたが、同じエラーが発生します。
ブレークポイントを使用して、dequeueReusableCellWithReuseIdentifierコールバックが実行される前にregisterClass行が実行されていることを確認しました。
RegisterClass beforeを呼び出していたため、この問題が発生しました。テーブルビューオブジェクトをインスタンス化していました。作業コード:
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];
また、セル(register ... forCellWithReuseIdentifier)と補足ビュー(register ... forSupplementaryViewOfKind)の違いを忘れないでください。
私はdequeing補足(ヘッダー/フッター)タイプで正しく使用していましたが、誤って登録済みセルタイプとして使用していました。ええと。
UICollectionViewController
またはUITableViewController
でこれを経験した場合は、rob mayoffが言ったことを実行し、Collection View
またはTable View
はストーリーボードのプロパティに接続されています。
もう1つのよくある間違いは、ストーリーボードで正しいCollectionID
またはCellID
を指定するのを忘れたことです。
コレクションビューセルで作業していたとき、私は次のように書いています。
static NSString *identifier = @"cell ";
注意深く見ると、識別子文字列の最後に余分なスペースがあります。私の間違いに気づいた後、これが誰かに役立つことを願っています。
参照: