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 最初滚动跳跃

向上滚动时保持 UICollectionView 中的滚动位置

如何检测滚动到水平 UICollectionView 的末尾

有没有办法自动滚动到 UICollectionView 的底部