我正在尝试这样的事情:
let indexPath = IndexPath(item: 0, section: 0)
let cell = collectionView.cellForItem(at: indexPath) as! PostAttachmentCellView
cell.backgroundImage.image = file as? UIImage
此处collectionView具有类型为PostAttachmentCellView
的可重用单元格。
但是它会引发以下错误:
线程1:致命错误:展开包装时意外发现nil 可选值
人口是通过这种方式完成的:
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "PACell", for: indexPath) as! PostAttachmentCellView
cell.customize()
return cell
}
我不明白这里出了什么问题以及应该如何纠正。非常感谢您的帮助。
我不想只是通过将错误放在let
中来消除错误,但我希望单元格也具有背景图片(从代码中可以直观看出)。
答案 0 :(得分:2)
该单元格只有在可见的情况下才不是nil
if let cell = collectionView.cellForItem(at: indexPath) as? PostAttachmentCellView {
cell.backgroundImage.image = file as? UIImage
}
//
因此您可以编辑图像的dataSource数组并重新加载表/单元格
var images = [UIImage]()
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "PACell", for: indexPath) as! PostAttachmentCellView
cell.backgroundImage.image = images[indexPath.row]
cell.customize()
return cell
}
在您的示例中,您更改了第一个顶部单元格的图像,所以改为这样做
images[0] = file as? UIImage
// here either reload the table/cell