繁体   English   中英

iOS - SDWebImage加载错误图片

[英]iOS - SDWebImage loading wrong Image

我正在使用SDWebImage库进行缓存和延迟加载。 但我发现有时它会显示另一个细胞的图像。

细节Scenerio

  • CollectionView包含包含UIImageView和Labels的单元格。
  • ImageView包含用户的图像和标签
    名。

但有时在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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM