2016-05-11 53 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() 
      } 
     } 
    } 
相關問題