Я использую собственный CollectionViewCell в своей раскадровке. Когда я запускаю приложение, я получаю это сообщение:
Невозможно передать значение типа 'UICollectionViewCell' в TestProject.CollectionViewCell.
Я использую собственный CollectionViewCell в своей раскадровке. Когда я запускаю приложение, я получаю это сообщение:
Невозможно передать значение типа 'UICollectionViewCell' в TestProject.CollectionViewCell.
Шаблон для CollectionViewController в Xcode 6 поставляется с этой строкой кода в viewDidLoad, которая меняет спецификацию в вашем раскадровке.
// Register cell classes
self.collectionView!.registerClass(UICollectionViewCell.self, forCellWithReuseIdentifier: reuseIdentifier)
Просто удалите его.
Я сталкиваюсь с этой проблемой, потому что в viewDidLoad()
я зарегистрировал свою ячейку с классом UICollectionViewCell. В моем cellForItemAtIndexPath
используется CustomSubcalssCollectionViewCell для dequeueReusableCell.
убедитесь, что registerClass и dequeueReusableCell - это тот же самый класс, который разрешает проблему
self.registerClass(SomeUICollectionCellClass.self, forCellWithReuseIdentifier: reuseIdentifier)
let cell = collectionView.dequeueReusableCellWithReuseIdentifier(reuseIdentifier, forIndexPath: indexPath) as! SomeUICollectionCellClass
Я ударил эту ошибку при создании экземпляра ViewController
из раскадровки в моем unit test.
storyboard.instantiateViewControllerWithIdentifier("someVC") as! MyViewController
Проблема заключалась в том, что я назначил конкретный модуль в инспекторе идентификации для этого VC в раскадровке. Я удалил его так, чтобы он по умолчанию соответствовал текущему модулю, который является приложением, и во время тестирования тестирует модуль.
Я получил эту ошибку, когда пользовательский класс (на инспекторе Xcode) по-прежнему имел свой класс, установленный в UICollectionViewCell по умолчанию, а не мой собственный класс для TestProject.CollectionViewCell.
Чтобы исправить это, просто измените пользовательский класс на свою реализацию.
self.collectionView!.register(MyCollectionViewCell.self, forCellWithReuseIdentifier: reuseIdentifier)
Вам не нужно удалять эту строку. Вы зарегистрируете свой собственный класс ячеек, унаследованный UICollectionViewCell.self
, если вы хотите зарегистрировать класс с помощью кода