我正在使用SDWebImage将图像加载到分页水平集合视图中。某些图片未加载,并显示“已取消”错误。
以下是我宣布单元格的方式:
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: PHOTOS_CELL_ID, for: indexPath) as! PhotosCell
以下是我如何将图像加载到单元格的图像视图中:
cell.photoImgV.sd_setImage(with: URL(string:photo[Constants.PHOTO_URL] as! String), placeholderImage: nil, options: SDWebImageOptions(rawValue: 0), completed: { (img, err, cacheType, imgURL) in
if err != nil{
print("ERROR LOADING IMAGE: \(err?.localizedDescription ?? "ERRRRoR")")
}
// prints: ERROR LOADING IMAGE: cancelled
我希望有一个解决方法。
答案 0 :(得分:1)
您应该知道SDWebImage
如何实施他们的sd_setImage方法。在方法的开头,调用sd_cancelImageLoadOperationWithKey
来取消当前请求并使用新URL启动请求。
在您的情况下,我猜错误被记录,因为细胞被重复使用。
当屏幕上显示一个单元格时,它会使用sd_setImage
启动获取图像的请求。在此请求完成之前,您滚动并使此单元格移出屏幕。此时,您继续滚动并重复使用单元格。当前请求未完成时,在此单元格上再次调用sd_setImage
并使用另一个URL。正如我上面所说,sd_setImage
在开始新请求之前取消当前请求。
cancelled
错误,因为在sd_cancelImageLoadOperationWithKey
方法的开头调用了sd_setImage
。
在这种情况下,您不应该关心cancelled
错误。您的代码运行正常。