无法编辑可重复使用的收藏夹视图单元格

时间:2018-09-28 14:42:06

标签: ios swift xcode

我正在尝试这样的事情:

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中来消除错误,但我希望单元格也具有背景图片(从代码中可以直观看出)。

1 个答案:

答案 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