0

奇妙な問題に遭遇しました:

UITabBarControllerのタブの1つであるTableViewController(最近のタブと呼びます)があります。最初のタブバー([参照]タブ)のサンドボックス(ドキュメントフォルダー)にアイテムが保存されています。次に、2番目のタブバー(最近)でそれらを引き出し、cellForRowAtIndexPathで設定します。

これが奇妙な振る舞いです:私が最初のビューコントローラー(ブラウジング)でサンドボックスにアイテムを追加している間、すべてが正常に機能します。TableViewControllerである2番目のタブ(最近)を開くと、そこにアイテムが表示されます。次に、最初のコントローラー(参照)に戻ってアイテムを追加しようとしましたが、表示されません(最近に戻ったとき)。

ただし、アプリケーションを再起動すると、2回目に選択したアイテムが(最近)表示されます。

私は最近tableViewreloadDataを呼び出そうとしました(実際には可能な限りどこでも)。[tableViewbeginUpdates]を呼び出そうとしました。

変更はありません。テーブルビュー(最近の場合)は、アプリケーションの再起動後にのみ適切に更新されます。

助言がありますか?

4

1 に答える 1

0

問題は、CellForRowAtIndexPathにアイテムを引き出すためのインデックスを含む配列がなかったため、tableViewで行数の計算に問題が発生したことだと思います(これを別のSOスレッドで読み取ってください)。

配列は、CellForRowAtIndexPathが呼び出される前にすでに存在している必要があり、その内部でインスタンス化されてはなりません(パブリックAPIを介してクラスに渡されるか、たとえばviewDidLoadでインスタンス化されます)。それ以外の場合は、CellForRowAtIndexPathが呼び出されるたびにインスタンス化され、セルの作成に使用できる静的インデックスはありません。

于 2012-11-19T16:04:20.593 に答える