2

複数のセクションがあり、それぞれに個別のコントロールを持つUITableView複数のセルがあります。UIStepper必要に応じて、各セルのUIStepperコンパニオンをタップして保持すると、現在の値でUILabel更新されます。UIStepper

これは正常に機能しています。 をUIStepper押し続けると合計が増加し、そのように が更新UILabelされます。

私が望むのは、各セクションのヘッダーがそのセクションのすべてのセルから現在の合計を合計し、その数値をヘッダー テキストに追加して、ユーザーにすべてのセクションのセルUIStepper値の簡単な合計を与えることです。

====================
 セクション合計: 12
====================
 セル: 3 | - | + |
--------------------
 セル: 5 | - | + |
--------------------
 セル: 4 | - | + |
====================
 セクション合計: 9
====================
 セル: 1 | - | + |
--------------------
 セル: 2 | - | + |
--------------------
 セル: 6 | - | + |

呼び出しを使用して、それも機能してい[self.tableView reloadData] ;ます。

ただし、上で行われた各個別のタッチのみを登録しUIStepperます。reloadData呼び出しは、登録されている連続タッチを停止するように見えます。これは、ヘッダーの合計をそのセクションのセルの増加する値と同期させるには、ユーザーがコントロールを長押しするのではなく、一度に 1 タップずつタッチし続ける必要があることを意味します。

「ループ」全体で単一セクションのヘッダー テキストをリロードする方法はありますか?ユーザーがコントロールに指を置いたままにすると、増加する値を追跡できますか?

4

1 に答える 1

0

私はあなたが持っているすべてのセクションヘッダーへの参照を保持し、インクリメントコードでは、テーブルの更新に頼るのではなく、ヘッダービューでメソッドを直接呼び出します。セクション ヘッダーを作成するには、主に次の 2 つのオプションがあります。

  1. それらをすべて初期化viewDidLoadし、コレクションに保持します。次にtableView:viewForHeaderInSection:、コレクションからそのセクションの適切なインスタンスを返します。このオプションは、作成するセクションの数が事前にわかっている場合に最適です。

  2. それらを遅延して初期化し、tableView:viewForHeaderInSection:セクション番号でコレクションに保存します。多くのヘッダーがあり、ユーザーがスクロールしていない場合にヘッダーをメモリに保持したくない場合は、これが最善の策です。

ヘッダーを更新する必要がある場合は、コレクションから取り出して、インクリメント メソッドを呼び出します。表示されている場合はすぐに更新され、表示されていない場合は、スクロールして表示されると正しい値で表示されます。理想的には、これらのインクリメントされた値は、どこかのモデル オブジェクトに永続化されます!

于 2013-04-29T20:24:51.470 に答える