2016-05-11 33 views
0

有一个collectionView,可能会根据数据加载一吨细胞。目前我的体系结构是viewDidLoad(从dataSource获得第25个),然后在willDisplayCell(获得25个数据集的其余部分,直到达到速率限制)。问题在于它似乎一下子就把所有的数据都拉下来了。除非用户滚动,否则我不想为单元格拉下更多的数据(即除非必须显示那些单元格)。我怎样才能做到这一点?仅当用户滚动时才将数据拉入collectionView?

我知道我需要与cellindexPath一起使用willDisplayCell,但是我无法将它拼在一起?

override func viewDidLoad() { 
     super.viewDidLoad() 

     getFirstPinsAndImages() 

    } 

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

      if maxExceeded == false { 
      getRestOfPinsAndImages() 
      } 



    } 
+0

'UICollectionView'从'UIScrollView'继承 - 你应该能够显示第一25然后使用[UIScrollViewDelegate](https://developer.apple .com/library/ios/documentation/UIKit/Reference/UIScrollViewDelegate_Protocol/index.html#// apple_ref/occ/intfm/UIScrollViewDelegate/scrollViewDidScroll :) meth ods来确定何时滚动到集合视图的底部,然后加载一些更多的数据。 – Wez

+0

谢谢@ Wezly,可能会有效,但我可以通过以下答案提高性能 – GarySabo

回答

0

我需要什么做的是限制数据呼叫时,才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() 
      } 
     } 
    } 
相关问题