swift - 当 NSCollectionView 滚动到内容末尾时加载更多数据 (macOS)

标签 swift macos scroll nsscrollview nscollectionview

在我的 macOS 应用程序中,我有一个 NSCollectionView。我下载了数据并将其放入 Collection View 中,现在我想在用户滚动到可用内容的底部时加载更多数据。在 iOS 上,我可以使用 UIScrollViewDelegate.scrollViewDidEndDragging(_:willDecelerate:) 执行类似的操作,但我不确定如何在 macOS 上执行此操作。

当用户滚动到 View 底部时如何触发加载?

最佳答案

我在 iOS 上使用的一种可能的方法是在显示特定项目时触发加载。在 macOS 上,这可以使用 NSCollectionViewDelegatecollectionView(_:willDisplay:forRepresentedObjectAt) 方法来完成。像这样的事情:

func collectionView(_ collectionView: NSCollectionView, willDisplay item: NSCollectionViewItem, forRepresentedObjectAt indexPath: IndexPath) {
    if indexPath == self.lastIndexPath {
        loadNextSection()
    }
}

func loadNextSection() {
    guard let self.loading == false else {
        return
    }
    self.loading = true
    self.loader.loadSection(nextSection) { objects in
        self.nextSection += 1
        self.sections.append(objects)
        self.lastIndexPath = IndexPath(indexes: [self.sections.count, objects.count])
        DispatchQueue.main.async {
            self.collectionView.reloadData()
        }
    }
}

关于swift - 当 NSCollectionView 滚动到内容末尾时加载更多数据 (macOS),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48083851/

相关文章:

swift - 在相机 View 中定位 Sprite

string - 如何在 Swift 中拆分字符串

XCode 和 CUDA 集成

macos - NSRunningApplication,返回最近使用的应用程序列表?

javascript - 垂直滚动 Stellar JS 上的水平位置移动

android - 水平滚动问题

ios - 从 NSArray 中获取具有 CoreData 内容的字段

swift - 确定 Any.Type 是否可选

macos - MonoMac Create Mac Installer 导致 Merging Mono Failed。致命的未处理异常

javascript - 检测总滚动距离