Подтвердить что ты не робот

Не удалось передать значение типа 'UICollectionViewCell'

Я использую собственный CollectionViewCell в своей раскадровке. Когда я запускаю приложение, я получаю это сообщение:

Невозможно передать значение типа 'UICollectionViewCell' в TestProject.CollectionViewCell.

4b9b3361

Ответ 1

Шаблон для CollectionViewController в Xcode 6 поставляется с этой строкой кода в viewDidLoad, которая меняет спецификацию в вашем раскадровке.

// Register cell classes
self.collectionView!.registerClass(UICollectionViewCell.self, forCellWithReuseIdentifier: reuseIdentifier)

Просто удалите его.

Ответ 2

Я сталкиваюсь с этой проблемой, потому что в viewDidLoad() я зарегистрировал свою ячейку с классом UICollectionViewCell. В моем cellForItemAtIndexPath используется CustomSubcalssCollectionViewCell для dequeueReusableCell.

убедитесь, что registerClass и dequeueReusableCell - это тот же самый класс, который разрешает проблему

self.registerClass(SomeUICollectionCellClass.self, forCellWithReuseIdentifier: reuseIdentifier)

let cell = collectionView.dequeueReusableCellWithReuseIdentifier(reuseIdentifier, forIndexPath: indexPath) as! SomeUICollectionCellClass

Ответ 3

Я ударил эту ошибку при создании экземпляра ViewController из раскадровки в моем unit test.

storyboard.instantiateViewControllerWithIdentifier("someVC") as! MyViewController

Проблема заключалась в том, что я назначил конкретный модуль в инспекторе идентификации для этого VC в раскадровке. Я удалил его так, чтобы он по умолчанию соответствовал текущему модулю, который является приложением, и во время тестирования тестирует модуль.

Ответ 4

Я получил эту ошибку, когда пользовательский класс (на инспекторе Xcode) по-прежнему имел свой класс, установленный в UICollectionViewCell по умолчанию, а не мой собственный класс для TestProject.CollectionViewCell.

Чтобы исправить это, просто измените пользовательский класс на свою реализацию.

Custom Class Section

Структура документа

Ответ 5

 self.collectionView!.register(MyCollectionViewCell.self, forCellWithReuseIdentifier: reuseIdentifier)

Вам не нужно удалять эту строку. Вы зарегистрируете свой собственный класс ячеек, унаследованный UICollectionViewCell.self, если вы хотите зарегистрировать класс с помощью кода