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