0

私は長い間、自分のアプリのこのコードを見てきました。ユーザーがALBUMを追加すると、RootViewControllerの配列(listOfItems)に追加されます。次に、別のクラスがそれを呼び出して更新します(reloadData)。いくつかのNSLogを調べた後、次のことを行います

  • numberOfRowsInSection行数を更新します(正しい)
  • cellForRowAtIndexPath行を表示します(NSLogはlistOfItemsが正しいことを示します)
  • numberOfRowsInSectionすべての新しいデータを繰り返して削除します
  • cellForRowAtIndexPathもう一度繰り返し、新しいデータ以外のすべてを表示します

なぜそれが繰り返されるのかわかりません-私は一[self.tableView reloadData];度だけ電話をかけています。

そして、すべてのNSTimerをチェックしました。アプリをそこに置いて、コンソールに何も表示されないようにしました。

助けてください!コールトン

PS:コードが必要な場合は、お問い合わせください。


編集:これが何が起こっているかのサンプルNSLogです

Number Of Rows: 3
Array: (One, Two, Three)

セルテキスト:1セルテキスト:2セルテキスト:3

---「4」のセルを追加---

Number of Rows: 4
Array: (One, Two, Three, Four)

Number of Rows: 3
Array: (One, Two, Three)

Cell Text: One
Cell Text: Two
Cell Text: Three

編集:完全なRootViewContoller.m

REMOVED

PS:長いコードで申し訳ありませんが、ありがとうございました!

4

4 に答える 4

3

CellForRowAtIndexPathは、テーブルビューに表示されているセルごとに繰り返されます。NSLogを配置する場所に関する詳細情報が必要です。

于 2011-03-09T04:07:01.600 に答える
2

の実装のどこかにブレークポイントを追加しますnumberOfRowsInSection。ブレークポイントに到達したら、デバッガービューに切り替えて、スタックトレースを確認します。取得する両方の呼び出しに対してこれを実行します。自分に属するメソッドが見つかるまでスタックを見下ろします(太字で表示されます)。どこに電話をかけているのかがわかるはずですreloadData

ブレークポイントがヒットした場合、呼び出しのソースとして独自のメソッドが見つからない場合は、NSTimerまたはそれを呼び出す何かを持っている可能性があります。

ハッピーデバッグ:)

于 2011-03-09T12:15:43.853 に答える
1

これが役立つかどうかはわかりませんが、クラスにそれがある場合はコメントを外してみて[super viewWillAppear:animated]くださいviewWillAppear。新しいバージョンのSDKのバグのようです。

- (void)viewWillAppear:(BOOL)animated {
    //[super viewWillAppear:animated];
}
于 2011-03-09T12:18:22.507 に答える
-1

他の誰かがこの問題を抱えている場合は、NSTimerを使用してX秒ごとにデータをリロードします。更新が必要かどうかを確認するために、現在テーブルにあるデータとROWSにデータを入力するARAAYに対して小さなカウンターを実行しました。そうでない場合は、何もしません。

于 2011-03-10T04:33:52.053 に答える