web-dev-qa-db-fra.com

Swift - impossible de retirer une vue de type: UICollectionElementKindCell avec l'identificateur

J'ai reçu ce message d'erreur en essayant de charger UICollectionView.

2015-07-23 16: 16: 09.754 XXXXX [24780: 465607] Application terminée en raison de Exception non interceptée 'NSInternalInconsistencyException', raison: 'ne [pouvait] pas supprimer la vue de type: UICollectionElementKindCell avec identifiant CollectionViewCell - doit enregistrer une plume ou une classe pour l'identifiant ou connecter une cellule prototype dans un storyboard '

Première pile d'appels:

Mon code

@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

    }

J'ai déjà déclaré CollectionViewCell dans l'inspecteur du storyboard, mais le message d'erreur persiste.

 enter image description here

10
Mohammad Nurdin

Après avoir examiné votre exception:

2015-07-23 16: 16: 09.754 XXXXX [24780: 465607] * Application suspendue en raison de Exception non interceptée 'NSInternalInconsistencyException', raison: 'ne [pouvait] pas annuler l'affichage d'une sorte de type: UICollectionElementKindCell avec identifiant CollectionViewCell - doit enregistrer une plume ou une classe pour l'identifiant ou connecter une cellule prototype dans un storyboard '* pile d'appel du premier jet :

la dernière partie est la plus importante:

doit enregistrer une plume ou une classe pour l'identifiant ou connecter une cellule prototype à un storyboard

Ce qui signifie que votre vue de collection n'a pas enregistré votre cellule personnalisée. Pour résoudre ce problème, ajoutez ce qui suit dans votre viewDidLoad:

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

Pour Swift 3:

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

Dans votre viewDidLoad (), mettez ce code

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