0

テーブルビューに新しい値を入れたい。

tableView:cellForRowAtIndexPath:は以下を持っています

if (cell == nil) { // do something }

上部のifステートメントを削除して使用するとreloadData、アプリがクラッシュします。使用する前に、テーブルの古い値をクリアする必要がありますreloadDataか?もしそうなら、どのように?
ありがとう

編集:

reloadData中に入れたという意味ではなくてごめんなさいtableView:cellForRowAtIndexPath:。別のメソッドの中に入れて、中if (cell == nil) { // do something }から削除しましたtableView:cellForRowAtIndexPath:

4

5 に答える 5

2

内部でreloadDataを呼び出すことにより、無限ループを生成しています

tableView:cellForRowAtIndexPath:
于 2011-04-03T18:06:01.370 に答える
2

TableViewプログラミングガイドを読んで、概念を理解する必要があります。reloadData最終的にを呼び出すメソッドですtableView:cellForRowAtIndexPath:

于 2011-04-03T18:06:54.287 に答える
1

テーブルビューでデータをクリアする必要はありません。-prepareForReuseただし、UITableViewCellサブクラスに適切に実装して、再利用されたセルに古いデータが表示されないようにすることをお勧めします。

ところで、なぜif (cell == nil)ビットを削除したいのかは不明です。再利用(デキュー)するセルがない場合は、新しいセルを作成する必要があります。そうしないと、nilが返され、UITableViewで例外が発生します。

于 2011-04-05T04:31:49.003 に答える
0

reloadDataはすべてのtableViewデータソースを呼び出すため、cellForRowAtIndexPathで呼び出すことはできず、無限ループになります。

于 2011-04-03T18:09:03.103 に答える
0

あなた(99%の時間)はreloadDataから電話をかけることができませんtableView:cellForRowAtIndexPath:。これは、reloadData最終的にはを呼び出すtableView:cellForRowAtIndexPathため、無限ループが発生するためです。

質問にさらに答えるために、あなたがやろうとしていることをもっと説明する必要があります(そしていくつかの追加のコードがいいでしょう)。

于 2011-04-03T18:06:08.423 に答える