【问题标题】:uicollection view load more data at bottom scroll. iOS Swiftuicollectionview 在底部滚动加载更多数据。 iOS 斯威夫特
【发布时间】:2016-06-23 06:58:13
【问题描述】:

当我滚动底部到UICollectionView 时,我想在UICollectionView 中加载更多数据。我没有找到任何用于 swift 语言的库。谁能告诉我该怎么做?

问题 1 -> 向下滚动时如何加载更多数据

问题 2 -> 如果我能够在滚动到底部时获得更多数据,那么我应该如何添加相同的可变数组。所以它会加载整个数据。

【问题讨论】:

    标签: ios swift uiscrollview uicollectionview nsmutablearray


    【解决方案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:是的,您应该将新加载的数据添加到可变数组中。这样做将帮助您向上滚动并找到以前加载的数组项。

      希望这会有所帮助。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-03-17
        • 1970-01-01
        • 2016-12-31
        • 1970-01-01
        • 2017-07-22
        • 2017-03-24
        • 2021-07-05
        • 2016-11-23
        相关资源
        最近更新 更多