我正在使用一个自定义collectionview单元,该单元具有一个称为views的变量。 由于某种原因,我在错误的单元格中获得了视图,有时它也会复制自身。
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: docCellId, for: indexPath) as! DocumentCell
cell.backgroundColor = .white
cell.indexPath = indexPath
cell.views = dic[indexPath] ?? [(UIView(),CGRect.zero)]
cell.label.text = "\(indexPath.row)"
return cell
}
这是在我的自定义collectionview单元格中
var views : [(UIView, CGRect)] = [] {
didSet {
addViews()
}
}
fileprivate func addViews() {
for i in views {
addSubview(i.0)
i.0.anchor(top: topAnchor, left: leftAnchor, bottom: nil, right: nil, paddingTop: i.1.origin.y, paddingLeft: i.1.origin.x, paddingBottom: 0, paddingRight: 0)
}
}
答案 0 :(得分:3)
如果您重复使用单元格,则应覆盖prepareForReuse()
并删除以前添加的视图,否则您将只是在现有视图之上添加视图。
override func prepareForReuse() {
views.forEach { $0.0.removeFromSuperview() }
views = []
}
致谢