web-dev-qa-db-ja.com

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

UICollectionViewを読み込もうとすると、このエラーメッセージが表示されます。

2015-07-23 16:16:09.754 XXXXX [24780:465607]キャッチされなかった例外 'NSInternalInconsistencyException'が原因でアプリを終了しました、理由: '種類のビューをデキューできませんでした:識別子CollectionViewCellを持つUICollectionElementKindCell-ペン先またはクラスを登録する必要があります識別子またはストーリーボードのプロトタイプセルを接続します」

最初のスローコールスタック:

私のコード

@IBOutlet var collectionView: UICollectionView!

func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {

        let cell = collectionView.dequeueReusableCellWithReuseIdentifier("CollectionViewCell", forIndexPath: indexPath) as! CollectionViewCell

        cell.backgroundColor = UIColor.blackColor()
        cell.textLabel?.text = "\(indexPath.section):\(indexPath.row)"
        cell.imageView?.image = UIImage(named: "category")

        return cell

    }

ストーリーボードインスペクターですでにCollectionViewCellを宣言しましたが、それでもエラーメッセージが表示されます。

enter image description here

11
Mohammad Nurdin

あなたの例外を見た後:

2015-07-23 16:16:09.754 XXXXX [24780:465607] *キャッチされなかった例外 'NSInternalInconsistencyException'が原因でアプリを終了しました。理由: '種類のビューをデキューできませんでした:識別子CollectionViewCellを持つUICollectionElementKindCell-ペン先またはクラスを登録する必要があります識別子の場合、またはストーリーボードのプロトタイプセルを接続する '*最初のスローコールスタック:

最後の部分が最も重要です:

識別子のペン先またはクラスを登録するか、ストーリーボードのプロトタイプセルを接続する必要があります

これは、コレクションビューにカスタムセルが登録されていないことを意味します。これを解決するには、viewDidLoadに次を追加します。

var nib = UINib(nibName: "UICollectionElementKindCell", bundle:nil)
self.collectionView.registerNib(nib, forCellReuseIdentifier: "CollectionViewCell")
10
Miknash

Swift 3:

collectionView.register(YourCustomCellClass.self, forCellWithReuseIdentifier: "cell")
7

あなたのviewDidLoad()にこのコードを入れてください

collectionView.registerClass(YourCustomCellClass.self, forCellWithReuseIdentifier: "cell")