私はUITableView
セルがカスタムであり、セルにはチャート(Charts
ライブラリ)のビューがあります。グラフのデータはかなり大きく(コントローラのプロパティとして保存されています)、数秒間表示されます。そこにいくつかのラグが表示されるテーブルビューをスクロールするとき カスタムセルでUITableViewをスクロールするときのパフォーマンスを向上させよう
TableViewCell
クラス
にsetSelected
方法でいくつかのグラフの表示設定(少しだけUIの変更)を行います。私は表示したいと思う重い内容のためにそれが起こると思う。
ロード
ViewDidAppear
のすべてのセル、この配列からCellForRowAt
方法ショーの細胞では、配列に保存する:私は約4解決策を考えてきました。この問題を解決する中、。
スクロールビューにテーブルビューを置くと、テーブルビューのすべてのセルに収まるようにコンテンツの高さをかなり大きくします。
グラフの読み込みは、セルの読み込みとコンテンツビューの表示後に行うようにしてください。チャートの読み込み中にアクティビティインジケータを表示します。
バックグラウンドスレッドでグラフをロードします。
最初の2つのアプローチはメモリ管理の面ではあまり良くありません。しかし、私はよくわからない、私は知らなかった共通の解決策があるかもしれない。
プロジェクトからいくつかのコード例:
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let graphCell = tableView.dequeueReusableCell(withIdentifier: Cells.graphViewCell) as! GraphViewCell
graphCell.lineChartView.data = track.chartDataForHeight()
return graphCell
}
ここtrack
だが、私はグラフのデータを格納する変数です。
メインスレッドでUIを更新すると、tableviewscrollに影響します。あなたの3つのアプローチは良いでしょう、そして、第4のアプローチは、すべてのUIアップデートがメインスレッドで行われる必要があるため、問題があります – Vinodh