我们有SDWebImage库,它提供了一个类别(UIImageView + SDWebcache.m),用于图像下载,缓存,它还可以在UITableView或UIColllectionView单元上正确设置每个类别。我不想使用任何库,并希望创建一个类似的类别。下载图像后,如何跟踪此图像所属的单元格,并查看单元格是否可见,以避免将图像设置在已重复使用该单元格的另一个indexPath上。我写的代码(这里删除了缓存逻辑):
// Inside the category, I have this method
-(void)SetThumbImageFordownloadURL:(NSString*)url {
[MyDownloadManager asyncImageDownload:url withProgressHandler:nil andCompletionHandler:^(UIImage *image, NSUInteger errorCode){
dispatch_async(dispatch_get_main_queue(), ^{
//if cell is not visible and is reused by another index, this image wil be set on wrong cell
[self setImage:image];
});
}];
}
答案 0 :(得分:0)
选项1:将单元格内的URL作为属性引用,并在重用方法中将其取出。
并在您的代码块中,返回图像的实际URL,并执行以下操作:
[MyDownloadManager asyncImageDownload:url withProgressHandler:nil andCompletionHandler:^(UIImage *image, NSURL *url, NSUInteger errorCode){
dispatch_async(dispatch_get_main_queue(), ^{
//check if current hold key is equal to url and only then set the image.
[self setImage:image];
});
}];
选项2 /微调:将取消方法添加到您的" MyDownloadManager" ,并取消当前下载" didEndDisplay" tableview / collectionview的方法。