ios - 仅当用户滚动时才将数据拉入 CollectionView 中?

标签 ios swift uicollectionview

有一个collectionView,它可能根据数据加载大量单元格。目前我的架构是 viewDidLoad (从数据源获取前 25 个),然后在 willDisplayCell (以 25 为一组获取其余数据源,直到达到速率限制)。问题是它似乎一次性拉下了所有数据。我不想为单元格下拉更多数据,除非用户正在滚动(即除非需要显示这些单元格)。我怎样才能做到这一点?

我知道我需要使用 willDisplayCell 内的 cellindexPath 但我无法将它们拼凑在一起?

override func viewDidLoad() {
        super.viewDidLoad()

        getFirstPinsAndImages()

    }

override func collectionView(collectionView: UICollectionView, willDisplayCell cell: UICollectionViewCell, forItemAtIndexPath indexPath: NSIndexPath) {

            if maxExceeded == false {
            getRestOfPinsAndImages()
            }



    }

最佳答案

我需要做的是将数据调用限制为仅当 willDisplayCellindexPath.row (即即将显示的行)大于部分中的项目数(加载的单元格)减去某个任意数字(为加载时间提供缓冲区):

 override func collectionView(collectionView: UICollectionView, willDisplayCell cell: UICollectionViewCell, forItemAtIndexPath indexPath: NSIndexPath) {

        if indexPath.row > (self.collectionView(collectionView, numberOfItemsInSection: 0) - 10) {
            if maxExceeded == false {
                getRestOfPinsAndImages()
            }
        }
    }

关于ios - 仅当用户滚动时才将数据拉入 CollectionView 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37166423/

相关文章:

ios - 我应该为 Flutter 插件传入我的 Swift native 代码中的哪个 View Controller ?

swift - 如何更改 2x2 UICollectionView 的大小并适合整个屏幕 : Swift 3 Xcode 8

swift - 具有 3 列的 UICollectionView 不会产生所需的结果

ios - 横向更改 UISplitViewController 的 UITableViewController Master 的背景图像

ios - 如果我使用以下自定义本地化,我的应用程序会被苹果拒绝吗?

ios - 使用 IBAction/按钮进行应用内购买

objective-c - iOS 在缓存目录中存储文件一段时间

ios - iOS 7 中 UINavigationbar 下面的 UISegmentedControl

ios - 为什么我的 MKPointAnnotation 不可拖动,我该如何更改它?

ios - 如何在 Google Maps iOS SDK 上显示用户位置