2016-05-11 3 views
0

には、データに応じて1トンのセルが読み込まれる可能性のあるcollectionViewがあります。現在、私のアーキテクチャはviewDidLoad(データソースから最初の25を取得)、次にwillDisplayCell(レート制限を打つまで25のセットで残りのデータソースを取得)にあります。問題は、すべてのデータを一度にプルダウンするように見えるということです。私は、ユーザーがスクロールしていない限り(すなわち、それらのセルが表示される必要がない限り)、セルのためにさらにデータをプルダウンしたくない。これどうやってするの?ユーザーがスクロールしているときにのみコレクションビューにデータをプルダウンしますか?

私は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'から継承 - あなたは、[UIScrollViewDelegate(https://developer.appleを使用し、最初の25を表示することができなければなりませんUIScrollViewDelegate/scrollViewDidScroll:meth/library/ios/documentation 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() 
      } 
     } 
    } 
関連する問題