可重用的TableViewCell加载旧图像

时间:2016-09-16 19:29:35

标签: ios objective-c uitableview tableviewcell

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

    [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];
                                     }];
                                 }];

任何想法都将不胜感激

2 个答案:

答案 0 :(得分:1)

你需要在这里做两件事

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

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

希望这会解决您的问题

答案 1 :(得分:0)

问题是,在您重新使用单元格之后,将从URL加载图像。您可以存储图像的网址,每次重复使用的单元格时,图像的网址都应存储在自定义单元格类中。然后在完成块内使用NSURL 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]; }]; } }]; 方法检查加载的图像网址和存储的图像网址是否相同。如果它们相同则一切正常,单元格没有被重用,否则单元格被用于另一行,然后就不设置图像。

uniq