Я реализовал пользовательский класс UICollectionViewCell
в Swift, создал раскадровку с помощью UICollectionViewCotroller, назначил свой пользовательский класс контроллера, пользовательский класс ячейки, идентификатор ячейки и т. д. В основном все, что требуется для работы UICollectionViewController.
В прототипе ячейки раскадровки я добавил несколько представлений и подключил их как IBOutlets к моему пользовательскому классу ячейки:
вот мои IBOutlets в коде (как видите, они подключены):
Я также зарегистрировал собственный класс ячеек в своем контроллере:
self.collectionView.registerClass(MyCollectionViewCell.self, forCellWithReuseIdentifier: reuseIdentifier)
Когда я удаляю свою ячейку из очереди в коде, она возвращает ячейку моего пользовательского типа, но оба IBOutlets не инициализируются (равно nil
)
let cell = collectionView?.dequeueReusableCellWithReuseIdentifier(reuseIdentifier,
forIndexPath: indexPath) as MyCollectionViewCell
if let path = indexPath {
// Crash here as imageView is nil
cell.imageView.image = imagesArray[path.item]
}
Крашлог:
fatal error: unexpectedly found nil while unwrapping an Optional value
если я поставлю точку останова на оператор if
выше и сделаю po cell
, у меня будет такой вывод:
(lldb) po cell
0x00007fa799f4cdf0
{
UIKit.UICollectionViewCell = {
UIKit.UICollectionReusableView = {
UIKit.UIView = {
UIKit.UIResponder = {
ObjectiveC.NSObject = {}
}
}
}
}
selectionView = nil
imageView = nil
}
Любые идеи, почему IBOutlets не инициализируются?