0

我有一个包含 UIView 的自定义 UITableViewCell,我在其中显示了几张图片。

在我的 tableView:cellForRowAtIndexPath: 函数中,我调用 dequeueReusableCellWithIdentifier: 来重用旧的自定义单元格,然后用新图片更新它们。

问题是当我在屏幕上快速滚动时,我会在加载新图片之前看到旧图片闪烁,这很不吸引人。

我试图通过以下方式解决此问题:

  • 在自定义 TableViewCell 实现文件中实现 prepareForReuse;这导致相同的三个 UIView 一遍又一遍地出现,在这种情况下,新图片完全停止加载
  • 在调用 dequeueReusableCellWithIdentifier 后立即清除 UIView,方法是使用 for 循环删除所有子视图;该应用程序现在需要很长时间才能加载图片。

解决此问题的最佳方法是什么,为什么在我尝试的修复中会出现上述错误?这是我当前的代码:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{

    static NSString *cellIdentifier = @"Blah";
    blahCell *someCell = (blahCell *)[tableView dequeueReusableCellWithIdentifier:cellIdentifier];

    if (!someCell) {
        //initialize cell
    } else {

        someCell.imageContainerView = nil;
    }

    ... (other code here)
}
4

2 回答 2

0

您可以通过AFNetworking使用此UIImageView 类别

每当您必须设置新图像时,您只需要调用

[someCell.imageContainerView setImageWithURL:url placeholderImage:placeholderImage];

现在,每当您滚动时,如果未加载图像,您将看到一个占位符图像,而不是看到以前的单元格图像。

于 2015-04-13T04:29:49.480 回答
0

我会尝试将单元格的 imageView 属性设置nil为表视图数据源方法中的第一步cellForRowAtIndexPath

于 2015-04-13T04:45:06.687 回答