2012-02-08 11 views
0

ナビゲーションコントローラから1つのtableviewをポップして、新しいものをソースの同様のデータでプッシュすると、私のテーブルビューに問題が発生します。何とか私は古いテーブルビューからの細胞を見ています。何か案は?前のUITableViewのアイテムが新しいUITableViewに表示されます

+0

コードを見ずに言うのは難しいですが、この種のエラーの原因は、cellViewRowAtIndexPath:の既存のビューを変更するのではなく、その後、セルを再利用すると、それらのサブビューはまだ存在していて、表示されているにもかかわらず、追加のサブビューを作成していても表示されています。 – yuji

+0

うわー、ちょっと考えて、応答性を高め、私は古いテーブルビューをポップしたときにポップをアニメーション化するように設定していました。これは何とかメモリ内のセルを保持していました。新しいUITableViewをスタックにプッシュしたとき、デクテッドセルにアクセスして代わりに同様のデータを表示し、UITableViewをポップして新しいデータと置き換える予定の場合は、アニメーションなしで... – TChadwick

+0

ニースキャッチ!私は '[self.tableView reloadData];がキャッシュをフラッシュするので、アニメーションをポップしてリロードを呼び出すことができます。 –

答えて

3

これらが2つの異なるテーブルビューである場合は、おそらくそれらに異なる再利用識別子を付けることをお勧めします。

FirstTableの場合: UITableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:@ "FirstTableViewCell"];

SecondTableの場合: UITableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:@ "SecondTableViewCell"];

+0

私の場合、アイデアをお寄せいただきありがとうございます。私の場合は、それをポップアップしてリフレッシュされたリストに置き換える際に問題が発生していました。将来を知ることは役に立つでしょう! – TChadwick

1

私は、セルをデキューして(カスタムセルを使用して)応答性を高め、参照をメモリに格納していました。古いテーブルビューをポップしたときに、ポップをアニメートするように設定していました。これはどういうわけか、ちょうど私が新しいUITableViewをスタックにプッシュしたときに、デクッテされたセルにアクセスし、新しいデータの代わりにそれらを表示するように、メモリ内のセルをちょうど長く保持しました。したがって、同様のデータを表示し、UITableViewをポップして新しいデータに置き換える場合は、アニメーションなしでポップしてください。
または、上記のように固有の識別子を与えます。 (しかし、私の解決策はアニメーションの使用を避けることでした。

関連する問題