gpt4 book ai didi

ios - iOS:SDWebImage使用错误的图像加载单元格

转载 作者:行者123 更新时间:2023-12-01 17:30:10 28 4
gpt4 key购买 nike

我目前正在使用SDWebImage使用以下代码为我的表格单元加载图片:

[cell.coverImage sd_setImageWithURL:[self.dataInJSONModel.Content[indexPath.row] CoverImage] placeholderImage:[UIImage imageNamed:@"imageplaceholder_general"]];

问题是当我上下滚动时,图像被插入到错误的单元格中。在阅读有关此问题的StackOverflow上的一些文章后,我怀疑这是由于在滚动时重用了单元格,因此图像的异步下载可能会放在已更改的单元格indexPath上。

因此,我进行了一些更改,例如:
SDWebImageManager *manager = [SDWebImageManager sharedManager];
UIImageView * cellCoverImage = cell.coverImage;
[manager downloadImageWithURL:[self.dataInJSONModel.Content[indexPath.row] CoverImage] options:0 progress:^(NSInteger receivedSize, NSInteger expectedSize) {} completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, BOOL finished, NSURL * oriURL) {

NSArray *visibleIndexPaths = [tableView indexPathsForVisibleRows];
if ([visibleIndexPaths containsObject:indexPath]) {

cellCoverImage.image = image;
}
}];

甚至比较网址:
SDWebImageManager *manager = [SDWebImageManager sharedManager];
UIImageView * cellCoverImage = cell.coverImage;
[manager downloadImageWithURL:[self.dataInJSONModel.Content[indexPath.row] CoverImage] options:0 progress:^(NSInteger receivedSize, NSInteger expectedSize) {} completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, BOOL finished, NSURL * oriURL) {

if([oriURL isEqual:[self.dataInJSONModel.Content[indexPath.row] CoverImage]])
{
cell.coverImage.image = image;

}

}];

问题仍然存在。还是我可能编程错误?在网上找到了一些建议,但尚未找到具体的解决方案。

需要帮忙!

编辑

我已经对其进行了一些更改,但仍然无法使用:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{

NewsFeedCell * cell = [tableView dequeueReusableCellWithIdentifier:@"NewsFeedCell" forIndexPath:indexPath];


if (self.dataInJSONModel)
{
cell.coverImage.image = nil;
SDWebImageManager *manager = [SDWebImageManager sharedManager];
[manager downloadImageWithURL:[self.dataInJSONModel.Content[indexPath.row] CoverImage] options:0 progress:^(NSInteger receivedSize, NSInteger expectedSize) {} completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, BOOL finished, NSURL * oriURL) {

if ([cell isEqual:[self.tableView cellForRowAtIndexPath:indexPath]])
{
cell.coverImage.image = image;
}

}];

}

最佳答案

我遇到了同样的问题,并尝试分配.image = nil,但无法正常工作。

最后,我的选择是使用取消操作覆盖UITableViewCell中的prepareForReuse:

- (void)prepareForReuse  
{
[super prepareForReuse];
[_imageView sd_cancelCurrentImageLoad];
}

关于ios - iOS:SDWebImage使用错误的图像加载单元格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28198478/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com