2016-09-29 6 views
0

私はカロリーをカウントするアプリを持っています。ユーザー入力彼らのカロリー(食べ物の各ビットは、テーブルビューで1行になります。各セクションは、1日を表します。iOSの処理速度が遅いtitleForHeaderInSection

私はその日から、すべてのカロリーを追加するセクションヘッダを持っている。

今、私は価値が年を持っています私が見つけた問題は、このメソッドは、テーブルビューがロードされたときに呼び出されるということです(セクションだけでなく、すべてのセクションが呼び出されます)。表示されます)。

これを回避するにはどうすればよいですか?毎日の合計を表示したいですか。

+2

あなたはそのコードで何をしていますか?私はあなたが毎日の合計を計算していると推測します。 1日分のデータが変わるたびに毎日の合計を計算し、毎回計算するのではなく、データベースに格納するのはどうでしょうか。 – Paulw11

+0

UITableViewデータソースメソッドでは、ビューを準備して戻す以外は何もしないでください。計算は、前または非同期で実行する必要があります。 – EmilioPelaez

+0

この質問はXcodeとは関係ありません。そのタグを追加し続ける必要はありません。 – rmaddy

答えて

0

タイトルの計算が少し「高価」な場合、その計算を延期する方法が必要です。 titleForHeaderInSectionが実際にタイトルを表示するために呼び出されているときと、テーブルビューをセットアップするために呼び出されているときを知る良い方法はありません。

titleForHeaderInSectionの使用をviewForHeaderInSectionheightForHeaderInSectionに置き換えることが1つの解決策です。

ヘッダービューが実際にテーブルビューに追加されている場合にのみ、ヘッダービューのテキストを設定することができます。これはカスタムヘッダービュークラスのwillMove(toSuperview:)メソッドで行うことができます。スーパービューがnil以外の場合、ビューは親ビューに追加されます。このメソッドを使用してヘッダのテキストの計算を実際に行う方法が必要です。

コメントで指摘したように、もう1つの解決策は、毎日の合計を1回だけ計算して値を保存することです。テーブルビューでデータをロードするときに、計算を行う必要はありません。単に所定の値を使用してください。

関連する問題