细胞被过度重复使用

时间:2016-02-08 14:59:34

标签: ios swift uitableview uiimageview

我有一个UICollectionViewController和一些单元格(UICollectionViewCell)。我想在一些细胞上画图像。这工作正常,但是当我滚动时,一些单元格似乎被不必要地重复使用,换句话说,我没有明确绘制的单元格被绘制(仅在滚动之后)。

在我的单元格中,我执行以下操作:

imageView = UIImageView(frame: CGRectMake((self.bounds.size.width/4)-1, (self.bounds.size.height/4)-1, 30, 30));
imageView!.image = imageTick
self.addSubview(self.lblDay)
self.addSubview(imageView!)

我创建了一个图像视图并设置了它的图像,然后添加了标签和图像视图。

有人看到我做错了吗?

就完整性而言,这里是我如何初始化单元格的图像:

let imageTick:UIImage = UIImage(named: "star")!
var imageView:UIImageView? = nil

1 个答案:

答案 0 :(得分:2)

UICollectionViewCell被系统重用,因此您需要通过清除单元格中的所有内容来处理prepareForReuse UICollectionViewCell方法中重用单元格的可能性(设置图像为零等。)

Here is the doc for UICollectionReusableView that declares that

Here is the doc for UICollectionView您可以在该文档中看到,对于方法dequeueReusableCellWithReuseIdentifier:forIndexPath:,如果有可用的单元格可以重用,则会讨论调用prepareForReuse