2012-02-14 13 views
1

私はデータベースからデータを収集するUITableViewを持っています。私が知りたいのは、UITableViewコレクションを反復してセルの値をチェックできる方法があるかどうかです。私が尋ねる理由は、現在の値(フォント、サイズ、色などの変更)に基づいて各セルを更新したいからです。私はこのトピックに関してはanotherの投稿を見ましたが、セルは既に作成されており、その値は変更されているので、私にとっては少し難しくなっています。私はreloadDataを呼び出す前にUITableViewを反復することを考えていましたが、他の提案は歓迎されています。iOS反復UITableView

答えて

2

UITableViewのセルを反復処理しないでください。それらのうちのいくつか(実際にはほとんどの場合)は、リクエストするまで存在しない可能性があります。 UITableViewは積極的にセルをリサイクルするので、セルが表示されていない場合は、後でリサイクルキューのモーメントに戻すために、最初からセルを作成する可能性が非常に高いです。

あなたのモデルを変更し、reloadDataにあなたの投稿が示唆している方法を呼び出すことが適切な解決策になるでしょう。 iOSはできるだけ小さなCPUサイクルでアップデートを実行するので、すでに作成されているセルについて心配する必要はありません。これは、コーディングの面でも最も簡単なアプローチです。

+0

どのようにすれば、セル内のデータをチェックして、適切なフォーマットの変更を行うことができますか?私はデータベースからデータを取り出すためにUITableを割り当てているので、受け取った後でセルに表示するまで受け取っている値を完全に制御することはできません。私がやろうとしているのは、データベースから引き出し、アイテムフォーマットのタイプに応じてセルを小規模な在庫システムにすることです。最初の列のフォントを太字にし、各アイテムのドロップタイプを丁寧な色にし、そのタイプに関連するアイテム名の背景色を設定したいと思います。 – Seb

+0

これを行う正しい場所は、あなたの 'tableView:cellForRowAtIndexPath:'実装にあります。これは、 'UITableView'がセルにデータを設定し、その外観を設定することを期待する場所です。 – Alex

+0

@Sebこれをすべてあなたの 'tableView:cellForRowAtIndexPath:'メソッドに実装することができます。メソッドから戻るための 'UITableViewCell'を作成するか、または再利用のためにリサイクルされたものを設定するときは、データベースから取得した値にコンテンツを設定します。これは値を調べる適切な場所であり、 'UITableViewCell'のスタイル設定要素を必要に応じて設定してから、それを' UITableView'に返して表示します。 – dasblinkenlight

1

テーブルビューは、データを表示するためのものです。あなたの表のセルのプロパティは、読み込みではなく書き込む必要があります。この状況を適切に処理するには、データが変更されたときに、基になるモデルオブジェクト(テーブルビューにデータを挿入するために使用するオブジェクト)を更新し、影響を受ける行を再度読み込む必要があります。

あなたが遭遇する問題は、UITableViewが表のセルを再利用することです。テーブルセルが画面からスクロールすると、テーブルビューは同じセルを再利用して別の行を表示する可能性が非常に高いです。

これは基本的にはテーブルセルを反復処理できないことを意味します。データが変更されたために行を更新する必要がある場合は、reloadRowsAtIndexPaths:withRowAnimation:(またはすべての行が変更されている場合はreloadData)を呼び出し、その行が画面に表示されている場合はUITableViewがデータソースメソッドを呼び出し、表示するセル。