Я реализовал собственный класс 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]
}
Crashlog:
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 не инициализируются?