如何在设置单元格数据后更新UICollectionView中的单元格大小?

时间:2014-03-09 17:57:26

标签: ios uicollectionview

所以我有一个UICollectionView,每个单元格中有不同大小的不同图像。当调用cellForItemAtIndexPath:时,我使用一种方法更新UICollectionViewCell,该方法在Web上异步提取图像并显示它的完整大小。

我的问题是我的单元格的大小已经预先设置了sizeForItemAtIndexPath。我希望它被召回,以便单元格具有下载的图像大小。

我该怎么做?

2 个答案:

答案 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和属性,但我还没有设法让它工作。