我以编程方式创建了一个视图控制器。我不使用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
}
为什么会出现此问题?
最佳答案
您需要注册笔尖,而不是您的单元格的类。
myCollectionView.register(UINib(nibName:"CustomCell.xib",bundle:nil), forCellWithReuseIdentifier: "Cell")
关于ios - 即使从Storyboard链接,UICollectionView自定义单元格的 subview 也为零,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50142451/