有一个collectionView,它可能根据数据加载大量单元格。目前我的架构是 viewDidLoad
(从数据源获取前 25 个),然后在 willDisplayCell
(以 25 为一组获取其余数据源,直到达到速率限制)。问题是它似乎一次性拉下了所有数据。我不想为单元格下拉更多数据,除非用户正在滚动(即除非需要显示这些单元格)。我怎样才能做到这一点?
我知道我需要使用 willDisplayCell
内的 cell
和 indexPath
但我无法将它们拼凑在一起?
override func viewDidLoad() {
super.viewDidLoad()
getFirstPinsAndImages()
}
override func collectionView(collectionView: UICollectionView, willDisplayCell cell: UICollectionViewCell, forItemAtIndexPath indexPath: NSIndexPath) {
if maxExceeded == false {
getRestOfPinsAndImages()
}
}
最佳答案
我需要做的是将数据调用限制为仅当 willDisplayCell
的 indexPath.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/