gpt4 book ai didi

objective-c - UICollectionView 不重新加载单元格的 imageView

转载 作者:行者123 更新时间:2023-12-04 12:56:24 25 4
gpt4 key购买 nike

我调用了下面的代码:

-(UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath

不幸的是,当我调用 [collectionView reloadItemsAtIndexPaths:@[indexPath]]; 时, 中的 imageView 不会更新。如果我调用 reloadData,它会调用。我试图让代码尽可能高效,所以我不想只调用 reloadData。有没有人知道为什么这不起作用或我还需要做什么?在加载大量与 collectionView 可爱的 endAnimations 内容冲突的 API 图像查询时,我已经遇到了一些其他问题。任何帮助,将不胜感激。

  SearchResultsCollectionViewCell *searchResultCell = [collectionView dequeueReusableCellWithReuseIdentifier:NSStringFromClass([SearchResultsCollectionViewCell class]) forIndexPath:indexPath];
Product *product = self.products[indexPath.row];

UIImage *productImage = [self.imageCache imageForURL:product.fullImageUrl];


if (productImage) {
searchResultCell.productImageView.image = productImage;
} else {
[self.imageCache downloadImageForURL:product.fullImageUrl indexPath:indexPath withCompletion:^(UIImage *image, NSError *error) {
if (!error) {
searchResultCell.productImageView.image = image;
// [collectionView reloadData];
[collectionView reloadItemsAtIndexPaths:@[indexPath]];
}

}];
UIImage* image = [UIImage imageNamed:@"001_logo"];
searchResultCell.productImageView.image = image;
}

最佳答案

您访问和存储图像的方式似乎很奇怪。

我这样做的方法是为 productImage 上的 UIImage 创建一个 @property

然后你可以向产品索要它的图片。如果产品返回 nil 图像,则在单元格中放置一个占位符。

下载完成后,您可以重新加载单元格。

其次,我不会尝试更改您正在进行的下载调用的完成 block 中的单元格。

完成 block 应该更新模型(即将图像存储到产品对象中)然后重新加载单元格。

这样做的原因是您不确定运行完成 block 的单元格是 (a) 与您启动它的单元格相同或 (b) 它仍然显示相同的单元格产品。

关于objective-c - UICollectionView 不重新加载单元格的 imageView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20157005/

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