Objective c 重新使用自定义UITableViewCells,在加载新图片之前先简要查看旧UIView图片

Objective c 重新使用自定义UITableViewCells,在加载新图片之前先简要查看旧UIView图片,objective-c,uitableview,uiview,uiimageview,reuseidentifier,Objective C,Uitableview,Uiview,Uiimageview,Reuseidentifier,我有一个自定义UITableViewCell,其中包含一个UIView,我在其中显示了几张图片 在我的tableView:cellForRowAtIndexPath:function中,我调用dequeueReusableCellWithIdentifier:重用旧的自定义单元格,然后用新图片更新它们 问题是,当我在屏幕上快速滚动时,我会在加载新图片之前看到旧图片的闪烁,这很不吸引人 我已尝试通过以下方式解决此问题: 在自定义TableViewCell实现文件中实现prepareForReus

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

在我的tableView:cellForRowAtIndexPath:function中,我调用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)
}

您可以通过使用此
UIImageView
类别

每当你需要设置一个新的映像时,你只需要调用

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

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

我会尝试将单元格的imageView属性设置为
nil
,作为表视图数据源方法
cellForRowAtIndexPath
的第一步,我一直在尝试,但一直没有成功。我已经更新了我的问题,加入了我当前的代码。我已经用它来设置我的图像,但它仍然不起作用