添加新数据时如何在保持顺序的同时重新加载集合视图
How to reload collectionview while still keeping order when adding new data
我在我的项目中实施了分页,并注意到在插入新数据和重新加载集合视图时我会从第 52 项转到第 34 项。是否有办法继续留在第 52 项而不是返回到第 34 项?任何帮助将不胜感激
您可以通过不同的方式尝试以下解决方案
您可以重新加载最后一个可见索引的集合
yourCollectionView.reloadItems(at: collectionView.indexPathsForVisibleItems)
当添加新项目时调用下面的方法|| 细胞selection || 从任何其他方法从您要更新集合项的位置获取您要查看的索引路径并传递给方法
func reloadCollectionView(collectionView: UICollectionView,index:IndexPath){
let contentOffset = collectionView.contentOffset
collectionView.reloadData()
collectionView.layoutIfNeeded()
collectionView.setContentOffset(contentOffset, animated: false)
collectionView.scrollToItem(at: index, at: .centeredHorizontally, animated: false)
}
e.g 在集合中做了 select 项目我用下面的方式调用这个方法
func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
self.reloadCollectionView(collectionView: self.yourCollectionView, index: indexPath)
}
希望这个解决方案可以帮到你
我在我的项目中实施了分页,并注意到在插入新数据和重新加载集合视图时我会从第 52 项转到第 34 项。是否有办法继续留在第 52 项而不是返回到第 34 项?任何帮助将不胜感激
您可以通过不同的方式尝试以下解决方案
您可以重新加载最后一个可见索引的集合
yourCollectionView.reloadItems(at: collectionView.indexPathsForVisibleItems)
当添加新项目时调用下面的方法|| 细胞selection || 从任何其他方法从您要更新集合项的位置获取您要查看的索引路径并传递给方法
func reloadCollectionView(collectionView: UICollectionView,index:IndexPath){ let contentOffset = collectionView.contentOffset collectionView.reloadData() collectionView.layoutIfNeeded() collectionView.setContentOffset(contentOffset, animated: false) collectionView.scrollToItem(at: index, at: .centeredHorizontally, animated: false) }
e.g 在集合中做了 select 项目我用下面的方式调用这个方法
func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
self.reloadCollectionView(collectionView: self.yourCollectionView, index: indexPath)
}
希望这个解决方案可以帮到你