2015-07-23 5 views
8

Otrzymałem ten komunikat o błędzie podczas próby załadowania UICollectionView.Swift - nie można anulować widoku rodzaju: UICollectionElementKindCell z identyfikatorem

2015-07-23 16: 16: 09,754 XXXXX [24780: 465607] * zakończenie aplikacji powodu nieprzechwyconego wyjątku 'NSInternalInconsistencyException' powodu: „może nie usunie z widoku z rodzaju: UICollectionElementKindCell z identyfikator CollectionViewCell - musi zarejestrować stalówki lub klasy dla identyfikatora lub połączyć komórkę prototyp w storyboard” * pierwsze wezwanie rzut stosu:

Mój kod

@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 

    } 

Już zadeklarowałem CollectionViewCell w Inspektorze storyboardów, ale nadal pojawia się komunikat o błędzie.

enter image description here

Proszę o poradę. Dziękuję Ci.

+0

Zgaduję tworzysz swoje Stalówki komórek osobno, a nie wewnątrz twojego 'UICollectionView'. Jeśli tak, musisz najpierw zarejestrować plik nib z "UICollectionView". przy użyciu UINib * cellNib = [Uibib nazwaNibWithNibName: @ "CollectionViewCell" bundle: nil]; [self.collectionView registerNib: cellNib forCellWithReuseIdentifier: @ "CollectionViewCell"]; –

+0

@Dato 'Mohammad Nurdin, czy byłeś w stanie rozwiązać ten problem? – Miknash

+0

@Dato 'Mohammad Nurdin, czy byłeś w stanie to rozwiązać? – Miknash

Odpowiedz

9

Po przyjrzeniu się swoim wyjątek:

2015-07-23 16: 16: 09,754 XXXXX [24780: 465607] * Zakończenie aplikację powodu nieprzechwyconego wyjątku 'NSInternalInconsistencyException', uzasadnienie: „może nie dequeue widok rodzaju: UICollectionElementKindCell z identyfikatora CollectionViewCell - musi zarejestrować stalówki lub klasy dla identyfikatora lub połączyć komórkę prototyp w storyboard”* Pierwszy rzucać stosu wywołań:

ostatnia część jest najważniejsza:

musi zarejestrować stalówki lub klasy dla identyfikatora lub połączyć komórkę prototyp w storyboard

co oznacza, że ​​Twój widok kolekcji nie zostały zarejestrowane twoja niestandardowa komórka. Aby rozwiązać ten dodatek w swojej viewDidLoad następujący:

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

Dziękuję. moim problemem było to, że nie rejestrowałem mojej końcówki i zamiast tego rejestrowałem klasę za pomocą: self.collectionView! .registerClass (customCollectionCell.self, forCellWithReithIdentifier: "Cell") Twój kod działa. –

0

W swojej viewDidLoad() umieścić w tym kodzie

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

Dla Swift 3:

collectionView.register(YourCustomCellClass.self, forCellWithReuseIdentifier: "cell") 
Powiązane problemy