可重复使用的 TableViewCell 加载旧图像

Reusable TableViewCell loads an old image

我有一个可以用搜索框搜索的动态表格视图,如果我在后台单元格中加载图像并且搜索文本发生变化,单元格中的对象也可能会发生变化,有时在后台加载的旧图像将完成并在不应该显示的时候显示。并非每个图像都以相同的方式加载,但这是导致问题的方法:

    [self.CarImage sd_setImageWithURL:imageURL
                                 completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, NSURL *imageurl){
                                     [self.CarImage setAlpha:0.0];
                                     [UIImageView animateWithDuration:.5 animations:^{
                                         [self.CarImage setAlpha:1.0];
                                     }];
                                 }];

如有任何想法,我们将不胜感激

你需要在这里做两件事

1)在prepareforresue方法中取消当前下载请求

2) 在 prepareforresue 方法中将图像设置为 nil

希望这能解决您的问题

这里的问题是,图像是在您已经重新使用单元格后从 url 加载的。您可以存储图像的 url,每次重复使用单元格时,图像的 url 都应存储在自定义单元格 class 中。然后在完成块中使用 NSURLisEqual: 方法检查加载的图像 url 和存储的图像 url 是否相同。如果它们相同那么一切正常,单元格没有被重复使用,否则单元格被用于另一行,那么就不要设置图像。

self.carImgUrl = imageURL;//here carImgUrl is a property which you gonna set everytime when the cell is being reused.
[self.CarImage sd_setImageWithURL:imageURL
                             completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, NSURL *imageurl){
                                 if([imageurl isEqual:self.carImgUrl])
                                 {
                                    [self.CarImage setAlpha:0.0];
                                     [UIImageView animateWithDuration:.5 animations:^{
                                         [self.CarImage setAlpha:1.0];
                                     }];
                                 }
                             }];