[英]iOS - SDWebImage loading wrong Image
我正在使用SDWebImage库进行缓存和延迟加载。 但我发现有时它会显示另一个细胞的图像。
细节Scenerio
但有时在Imageview中加载的图像具有不同的图像。
让我们说
Index Name Image
0 nameA A
1 nameB B
2 nameC C
3 nameD B
所以这里因为索引有nameD所以图像应该是b“D”但它显示的是nameB的图像,即“B”
这是我使用的代码
if ([aMutDict objectForKey:@"picture_url"])
{
[[SDWebImageManager sharedManager]downloadWithURL:[NSURL URLWithString:[aMutDict objectForKey:@"picture_url"]] options:SDWebImageProgressiveDownload progress:Nil completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, BOOL finished) {
if(image){
[cell.imgProfilePic setImage:image];
}else{
[cell.imgProfilePic setImage:ApplicationDelegate.gblImgPlaceholder];
}
}];
}
您的方法的问题是,如果您滚动或完全下载图像,单元格变量将保存任何其他单元格的地址,而不是您要显示图像的实际单元格。 这就是图像显示错误的原因。
改变它:
if ([aMutDict objectForKey:@"picture_url"])
{
[cell.imgProfilePic setImageWithURL:[NSURL URLWithString:[aMutDict objectForKey:@"picture_url"]]
placeholderImage:ApplicationDelegate.gblImgPlaceholder
success:^(UIImage *image) {
NSLog("Image Loaded");
}
failure:^(NSError *error) {
NSLog("Image Not Loaded"); }
];
}
在实现Midhun的答案之后,我找到了另一个新SDWebImage库的方法 。 因为新的UIImageView + WebCache.h中没有成功/失败块
所以这适合我。
if ([aMutDict objectForKey:@"picture_url"])
{
[cell.imgProfilePic setImageWithURL:[NSURL URLWithString:[aMutDict objectForKey:@"picture_url"]] placeholderImage:ApplicationDelegate.gblImgPlaceholder options:SDWebImageRefreshCached completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType) {
if(error){
//Image Not Loaded
}
if(image)
{
// Image Loaded
}
}];
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.