Я создал контроллер вида программно. Я не использую Storyboard, потому что этот контроллер представления должен быть представлен несколькими контроллерами представления, и мне не нравится, когда мой Storyboard выглядит слишком сложным.
Этот контроллер представления содержит UICollectionView
, чьи ячейки настраиваются через раскадровку, называемую CustomCell.xib
, в которой в качестве подпредставления есть только UIImageView
.
Затем я создал файл CustomCell.swift
и сделал его владельцем файла CustomCell.xib
. Я также перетащил и связал UIImageView
с CustomCell.swift
:
class CustomCell: UICollectionViewCell {
@IBOutlet weak var imageView: UIImageView!
prepareForReuse() {
imageView.image = nil
}
}
Тогда, на мой взгляд, контроллеры viewDidLoad
и cellForItemAt
:
override func viewDidLoad() {
let layout = UICollectionViewFlowLayout()
layout.scrollDirection = .horizontal
let myCollectionView = UICollectionView.init(frame: view.bounds,
collectionViewLayout: layout)
myCollectionView.register(CustomCell.self, forCellWithReuseIdentifier: "Cell")
view.addSubview(myCollectionView)
}
cellForItemAt(...) {
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "Cell",
for: indexPath) as! CustomCell
cell.imageView.image = ... // <---"imageView" is nil when running, why?
return cell
}
Почему возникает эта проблема?