【问题标题】:Refreshing a UICollectionview刷新 UICollectionview
【发布时间】:2013-01-22 10:05:48
【问题描述】:

有谁知道在显示集合视图时如何重新加载/刷新 UICollectionView?基本上我正在寻找类似于 UITableview 的标准 reloadData 方法的东西。

【问题讨论】:

  • 可能我理解错了,但是 UICollectionView 实现了 reloadData。

标签: ios objective-c uicollectionview reloaddata


【解决方案1】:

你可以打电话:

[self.myCollectionView reloadData];

也可以重新加载各个部分和项目:

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

【讨论】:

  • WFIW 我相信人们遇到这种情况的原因是他们习惯于调用 [myTableView reloadData] 但使用 UICollectionViews 你必须调用 [myCollectionView.collectionView reloadData]。
  • [self.myCollectionView reloadData];只调用一次。想要重新加载所有数据。
【解决方案2】:

正确最好的方法是使用

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
    }
}];

并且所有内容都被预先计算为一个很好的动画。最佳做法是先删除所有元素,然后再添加,以避免冲突。

【讨论】:

  • 你拯救了我的一天!谢谢
【解决方案3】:
[self.collectionView reloadData];

【讨论】:

  • 虽然这确实会达到预期的效果,但使用 reloadData 会重绘所有单元格并且会影响性​​能。
  • 这不是一个好主意,因为重新加载整个表会导致性能下降并消耗能量。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-04-10
  • 2021-12-09
  • 2015-10-19
  • 1970-01-01
  • 1970-01-01
  • 2013-09-08
  • 1970-01-01
相关资源
最近更新 更多