uicollectionview 在底部滚动加载更多数据。 iOS 斯威夫特
Posted
技术标签:
【中文标题】uicollectionview 在底部滚动加载更多数据。 iOS 斯威夫特【英文标题】:uicollection view load more data at bottom scroll. iOS Swift 【发布时间】:2016-06-23 06:58:13 【问题描述】:当我滚动底部到UICollectionView
时,我想在UICollectionView
中加载更多数据。我没有找到任何用于 swift 语言的库。谁能告诉我该怎么做?
问题 1 -> 向下滚动时如何加载更多数据
问题 2 -> 如果我能够在滚动到底部时获得更多数据,那么我应该如何添加相同的可变数组。所以它会加载整个数据。
【问题讨论】:
【参考方案1】:Swift 3 和 Swift 4:CollectionView 委托方法
1) 当滚动到底部时,您可以使用
willDisplay
函数触发updateNextSet()
func collectionView(_ collectionView: UICollectionView, willDisplay cell: UICollectionViewCell, forItemAt indexPath: IndexPath)
if indexPath.row == numberofitem.count - 1 //numberofitem count
updateNextSet()
func updateNextSet()
print("On Completetion")
//requests another set of data (20 more items) from the server.
2) 将新数据附加到现有数组并重新加载集合视图
collectionView.reloadData()
【讨论】:
【参考方案2】:集合视图是滚动视图的子类,因此您可以使用滚动委托方法来找出滚动发生/完成的时间。发生这种情况时,您可以检查内容偏移量以确定您是否处于底部。
如果您已经加载,并且检查您没有加载更多内容,您可以开始新加载。将结果添加到您的数组中,然后重新加载集合视图(或告诉它插入的项目)。
【讨论】:
感谢 Wain 为我工作,但现在我如何添加两个 ns 可变数组。就像在开始时我在videoArray中得到了api结果。当我滚动时,我在 videoArray2 数组中得到了值。那么我怎样才能附加这两个呢? self.videoArray2 中的枚举器 self.videoArray.addObject(enumerator) 这是我尝试过的方法,但它给了我以下错误:[__NSCFArray insertObject:atIndex:]: mutating method sent to immutable object'【参考方案3】:以下是您问题的答案。
答案 1:有一个名为 SVPullToRefresh 的库,它将帮助您实现所需的目标。尝试在UICollectionView
中添加addInfiniteScrollingWithActionHandler
以加载更多。
答案 2:是的,您应该将新加载的数据添加到可变数组中。这样做将帮助您向上滚动并找到以前加载的数组项。
希望这会有所帮助。
【讨论】:
以上是关于uicollectionview 在底部滚动加载更多数据。 iOS 斯威夫特的主要内容,如果未能解决你的问题,请参考以下文章
UICollectionView 底部的 UIRefreshControl(加载更多数据)
UIView 在滚动时从 UICollectionView 的底部分离
向上滚动时保持 UICollectionView 中的滚动位置