Не удалось удалить из очереди вид типа: UICollectionElementKindCell с идентификатором - необходимо зарегистрировать перо или класс для идентификатора - PullRequest
0 голосов
/ 26 мая 2020

Это сводит меня с ума. Я собрал десятки представлений коллекций в прошлом, но это отказывается работать.

У меня есть xib для моей ячейки представления коллекции, и я дал ему идентификатор «Моя ячейка». В моем контроллере я делаю следующее:

    override func awakeFromNib() {
        super.awakeFromNib()

        myCollectionView.delegate = self
        myCollectionView.dataSource = self

        // Register the collection view cell
        myCollectionView.register(UINib(nibName: "MyCell", bundle: nil), forCellWithReuseIdentifier: "MyCell")
    }

    func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
        guard let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "MyCell", for: indexPath as IndexPath) as? MyCell else {
                fatalError("The dequeued cell is not an instance of MyCell.")
        }

        return cell
    }

Однако, что бы я ни делал, Xcode дает сбой и выдает мне эту ошибку:

*** Завершение работы приложения из-за неперехваченное исключение 'NSInternalInconsistencyException', причина: 'не удалось удалить из очереди представление вида: UICollectionElementKindCell с идентификатором MyCell - необходимо зарегистрировать перо или класс для идентификатора или подключить ячейку прототипа в раскадровке'

Я пробовал очистить папку сборки, перезапустить Xcode, даже перезапустить Ma c, но ничего не работает.

Что я делаю не так ??

Ответы [ 2 ]

0 голосов
/ 28 мая 2020

Я думаю, вам нужно проверить две вещи

  1. используйте myCollectionView.dequeueReusableCell

    `переопределить удовольствие c awakeFromNib () {super.awakeFromNib ()

        myCollectionView.delegate = self
        myCollectionView.dataSource = self
    
        // Register the collection view cell
        myCollectionView.register(UINib(nibName: "MyCell", bundle: nil), forCellWithReuseIdentifier: "MyCell")
    }
    
    func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
        guard let cell = myCollectionView.dequeueReusableCell(withReuseIdentifier: "MyCell", for: indexPath as IndexPath) as? MyCell else {
                fatalError("The dequeued cell is not an instance of MyCell.")
        }
    
        return cell
    }`
    
  2. Откройте файл Xib и проверьте, установлен ли повторно используемый идентификатор

enter image description here

Надеюсь, это решит вашу проблему, если не дайте мне знать

0 голосов
/ 26 мая 2020

Проверьте, указываете ли вы такой же точный идентификатор. Copy/Paste, чтобы убедиться, что они одинаковы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...