仅在用户滚动时将数据下拉到collectionView中?

时间:2016-05-11 14:58:17

标签: ios swift uicollectionview

有一个collectionView可能会根据数据加载大量的单元格。目前我的架构是viewDidLoad(从dataSource获得前25个),然后在willDisplayCell中(在25个集合中获取其余的数据源,直到达到速率限制)。问题是它似乎立即下拉了所有数据。除非用户正在滚动(即除非必须显示这些单元格),否则我不想为单元格下拉更多数据。我怎么能这样做?

我知道我需要使用cell内的indexPathwillDisplayCell,但我不能把它拼凑在一起?

override func viewDidLoad() {
        super.viewDidLoad()

        getFirstPinsAndImages()

    }

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

            if maxExceeded == false {
            getRestOfPinsAndImages()
            }



    }

1 个答案:

答案 0 :(得分:0)

我需要做的是将数据调用仅限于indexPath.row willDisplayCell(即即将显示的行)大于部分中的项目数(单元格)加载)少一些任意数字(给缓冲区加载时间):

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

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