刷新一个UICollectionview

23

有没有人知道在UICollectionView显示的时候如何重新加载/刷新它?基本上我是在寻找类似于UITableView标准reloadData方法的东西。


6
或许我有所误解,但是UICollectionView实现了reloadData。 - danh
3个回答

51

您可以直接拨打:

[self.myCollectionView reloadData];

单独的部分和项目也可以重新加载:

[self.myCollectionView reloadSections:indexSet];
[self.myCollectionView reloadItemsAtIndexPaths:arrayOfIndexPaths];

9
我认为人们遇到这个问题的原因是因为他们习惯于调用[myTableView reloadData],但是对于UICollectionView,你必须调用[myCollectionView.collectionView reloadData]。 - capikaw
[self.myCollectionView reloadData]; 只调用一次,想要重新加载所有数据。 - Anand Prakash

11
[self.collectionView reloadData];

虽然这确实可以达到预期的结果,但使用reloadData会重新绘制所有单元格,可能会影响性能。 - DrunkenBeard
不是一个好主意,因为重新加载整个表格会导致性能下降并消耗能量。 - Karsten

1

正确且最佳的方法是使用

NSMutableArray *indexPaths = [NSMutableArray array];
//prepare some data
//batchupdate as block
[self.collectionView performBatchUpdates:^{
    //operations like delete
   [self.collectionView deleteSections:[NSIndexSet indexSetWithIndexesInRange:NSMakeRange(1, count)]];
    [self.collectionView insertItemsAtIndexPaths:indexPaths];
} completion:^(BOOL finished) {
    // call something when ready
    }
}];

并且所有内容都会被预先计算并得到精美的动画效果。最佳实践是先删除,然后再添加所有元素,以避免冲突。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接