如何改变细胞再利用行为?

时间:2015-08-22 09:57:32

标签: ios objective-c iphone swift

我有tableView我在其中使用了单元格重用。 当我滚动速度非常快时,我可以看到一小段时间,新生成的单元格中显示了之前单元格中的标签和其他内容。

最终用户可能会出现问题,我正在寻找一种在可见之前缓存或加载单元格以避免这种情况的方法。

我还写了一个重置​​函数:

func resetCell(cell: UITableViewCell){
        for v in cell.contentView.subviews{
            if let v = v as? UILabel{
                v.text = ""
            }else if let v = v as? UIImageView{
                v.image = nil
            }
        }
    }

但这并不成功......

有什么想法吗?

3 个答案:

答案 0 :(得分:3)

要重置内容,您应该覆盖 UITableViewCell UICollectionViewCell 子类中的方法- (void)prepareForReuse;。这是一个这样做的例子:

- (void)prepareForReuse {
    _imageView.image = nil;
    _asset = nil;

    [super prepareForReuse];
}

此外,如果您有任何与此单元格相关的下载 - prepareForReuse是取消该单元格的最佳位置。

答案 1 :(得分:1)

您需要对单元格使用prepareForReuse函数。在此函数内部,您可以将任何文本标签重置为空字符串(或单元格中的任何其他内容)。

这将确保当表格视图重用单元格时,您将无法看到之前的单元格数据。

答案 2 :(得分:0)

istanbul cover run.js