2017-05-26 7 views
2

私は、stackoverflowと私が検索した多くのWebサイトで多くのソリューションを試しました。コレクション表ビュー内のビューセルスロースクロールパフォーマンス

私の問題:テーブルビューのセル内にコレクションビューがあります。私のデータはテーブルビュー(viewdidload)で1回読み込まれなければなりません。

コレクションビューをテーブルセル内に渡すと、コレクションビューを再度読み込む必要があるため、表示されません。

だから私の操作を行います。データ - >テーブルビューのcellforrow内 - >コレクションビューに渡す - > cell.collectionView.reloadData()

この原因スクロールのパフォーマンスに関する問題: collectionView.reloadData()私はスクロールするときので、テーブルビューのresuableセルアーキテクチャの(何度も何度もこの権利を超える呼び出し、

ここでのtableViewのcellforrowで私のコード:。

let cell = tableView.dequeueReusableCell(withIdentifier: SubCategoryCellID) as! SubCategoryCell 
     if isFetched { 
      cell.shimmeringView.isShimmering = false 
      cell.shimmeringImageView.isHidden = true 
      cell.shimmeringView.isHidden = true 
      cell.listLocation = nestedSubLocation[indexPath.item] 
      cell.collectionView.reloadData() 
     }else { 
      return cell 
     } 

Solutions私が試したソリューション: +静的なセルを作成し、cellForRowに表示するセルを取得する(これは完全にスクロールのパフォーマンスを修正しますが、メモリ管理には不向きで、親がコレクションビューの場合は機能しません)。 +スクロール停止時にデータを再読み込みする:最初に読み込むときにデータを読み込む必要があり、読み込みをやり直す必要がある場合は間違ったデータが必要です。

これを修正するには、スクロールのパフォーマンスを改善するための賢明な方法がありますか?

答えて

2

cell.collectionView.reloadData()

cell.collectionView.scrollRectToVisible(CGRect.zero, animated: false) 
+0

グレート解決した後に、このコードを入れて、あなたはこれが実際にどのように動作するかを説明できますか? – inokey

+0

@inokeyこのメソッドは、rectで定義された領域がスクロールビュー内でちょうど見えるようにコンテンツビューをスクロールします。領域がすでに表示されている場合、このメソッドは何も行いません。 [これを参照してください](https://developer.apple.com/documentation/uikit/uiscrollview/1619439-scrollrecttovisible?language=objc) – Bala

+0

私はあなたのソリューションを試しましたが、シミュレータの遅れのみを取り除いていました。テスト装置はこれでも十分速く処理できませんでした。しかし、私の問題はコレクションビューの中でセル自体を構築するときに深いものでした。そのため、あなたのソリューションは軽量な状況の大半で機能します。返信いただきありがとうございます! – inokey

関連する問題