2015-07-23 3 views
8

Я получил это сообщение об ошибке при попытке загрузить UICollectionView.Swift - не удалось удалить вид вида: UICollectionElementKindCell с идентификатором

2015-07-23 16: 16: 09,754 XXXXX [24780: 465607] * Нагрузочное приложение из-за неперехваченного исключение 'NSInternalInconsistencyException', причина: «может не из очереди вида рода: UICollectionElementKindCell с идентификатор CollectionViewCell - должен зарегистрировать перо или класс для идентификатора или подключения ячейки прототипа в раскадровке» * Первый стек бросить вызов:

Мой код

@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

Пожалуйста, советы. Спасибо.

+0

Я предполагаю, что вы создаете ваш Ячейки ячейки отдельно, а не внутри вашего 'UICollectionView'. Если да, вам нужно сначала зарегистрировать файл nib с помощью 'UICollectionView'. используя UINib * cellNib = [UINib nibWithNibName: @ "CollectionViewCell" bundle: nil]; [self.collectionView registerNib: cellNib forCellWithReuseIdentifier: @ "CollectionViewCell"]; –

+0

@Dato 'Мохаммад Нурдин, вы смогли это решить? – Miknash

+0

@Dato 'Мохаммад Нурдин, вы смогли это решить? – Miknash

ответ

9

После взглянуть на ваше исключение:

2015-07-23 16: 16: 09,754 XXXXX [24780: 465607] * Нагрузочный приложение из-за неперехваченного исключением 'NSInternalInconsistencyException', причина: «может не из очереди вида рода: UICollectionElementKindCell с идентификатора CollectionViewCell - необходимо зарегистрировать перо или класс для идентификатора или подключения ячейки прототипа в раскадровке»* Первый бросить стеков вызовов:

последняя часть является наиболее важной:

должен зарегистрировать перо или класс для идентификатора или подключение ячейки прототипа в раскадровке

Это означает, что ваш вид коллекции не зарегистрировано ваша пользовательская ячейка. Чтобы решить эту надстройку следующие в вашем viewDidLoad:

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

Спасибо. моя проблема заключалась в том, что я не регистрировал свой Nib и вместо этого регистрировал класс с помощью: self.collectionView! .registerClass (customCollectionCell.self, forCellWithReuseIdentifier: «Cell») Однако ваш код работает. –

0

В вашем viewDidLoad() поставить в этот код

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

Для Swift 3:

collectionView.register(YourCustomCellClass.self, forCellWithReuseIdentifier: "cell") 
Смежные вопросы