我需要在内部调用以下代码:
-(UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
很不幸,当我调用
[collectionView reloadItemsAtIndexPaths:@[indexPath]];
时,其中的imageView并没有更新。如果我调用reloadData,它会更新。我尝试使代码尽可能高效,所以不想只是调用reloadData。有人能解释一下为什么这个方法不起作用或者我需要做些什么吗?我已经遇到了一些其他问题,例如加载大量API图像查询与collectionView的 endAnimations 冲突等。如果有帮助的话,非常感谢。 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;
}
indexPath.row
更改为indexPath.item
。 - Fogmeister