所以我有一个UICollectionView,每个单元格中有不同大小的不同图像。当调用cellForItemAtIndexPath:时,我使用一种方法更新UICollectionViewCell,该方法在Web上异步提取图像并显示它的完整大小。
我的问题是我的单元格的大小已经预先设置了sizeForItemAtIndexPath。我希望它被召回,以便单元格具有下载的图像大小。
我该怎么做?
答案 0 :(得分:2)
如果您已经设置了尺寸,请找到您要刷新的单元格的索引:
NSIndexPath * indexPathOfCellToResize = // index path of cell to refresh
[myCollectionView reloadItemsAtIndexPaths:@[indexPathOfCellToResize]];
可能有更好的方法可以做到这一点,但这里有用的东西:
在您的单元格中创建代表协议
@protocol CellDelegate
- (void) imageIsReadyForCell:(id)cell;
@end
委托财产
@property (strong, nonatomic) id<CellDelegate>delegate;
在单元格中,当图像完成调用时:
[self.delegate imageIsReadyForCell:self];
然后在您的文件中托管接口
中的collectionView@interface SomeViewController : UIViewController <CellDelegate>
在.m
- (void) imageIsReadyForCell:(id)cell {
NSIndexPath * indexOfReadyCell = [yourCollectionView indexPathForCell:cell];
[myCollectionView reloadItemsAtIndexPaths:@[indexPathOfReadyCell]];
}
答案 1 :(得分:0)
不是答案,但我没有足够的声誉来评论。
我正在尝试更新我的collectionviewcell,并在图片下面加载了:
[self.delegate imageReadyForCell:cell]
但是这并没有改变任何东西,我在imageReadyForCell的方法中放置了断点,但它甚至没有达到它。我按照上面所做的所有步骤使用了CellDlegate的委托的protolcol和属性,但我还没有设法让它工作。