我有一个UICollectionview里面有4个UIImageviews。这些用于显示单元格上的特定图标。不幸的是,当我有一个用图像填充所有4个图像视图的单元时,它可以正常工作。但是,当一个单元格只能显示少于4个项目时,有时(并非总是)它会显示其他图标。它似乎来自其他(先前)单元。像它没有正确回收。

这是我的代码。我有一个可以在其中存储所有图像视图的插座。

@IBOutlet var savings: [UIImageView]!


接下来,我的Cell Viewcontroller内部有一个方法,该方法根据给定的图标名称数组进行填充。

func setPropositions(propositions: [SupplierProposition])
{
    for (index, item) in propositions.enumerate() {
        if index < 4 {
            savings[index].image = nil
            savings[index].setNeedsDisplay()
            if let image = UIImage(named: item.iconName!) {
                savings[index].image = image
            } else {
                savings[index].image = nil
            }
        }
    }
}


如您所见,我尝试了所有操作以确保在渲染之前imageviews为空,但是它不起作用。知道我可能在做错什么的人吗?

最佳答案

像它没有正确回收


不。这就像您没有正确回收它。完全配置此单元格是您在cellForItemAtIndexPath:中的工作。该单元格可能已经被使用过,因此它可能已经包含您先前放置在其中的图像视图。如果此索引路径的单元格应该具有较少的图像视图,则删除不想要的图像是您的工作。

关于swift - collectionview中的UIImageViews没有正确回收,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34970260/

10-12 05:48