2012-03-14 11 views
1

UITableViewで[reloadData]を呼び出すのに最適なタイミングはいつですか? viewDidAppearまたはviewWillAppear?ビューがアンロードされると、基になるテーブルビューもアンロードされますか?UITableView reloadDataベストプラクティス

私が尋ねる理由は、私が見ている行動のためです。ビューがそのデータソースをリロードするように要求されたが、終了する前に割り当てが解除されたとします。シナリオは、UITabBarControllerを使用し、選択されているViewControllerとは別のビューにナビゲートします。では、viewWillAppearは呼び出されますが、viewDidAppearは呼び出されません(私は離れて移動しています)。

結果として、ViewControllerは(モデルデータとともに)割り当て解除されますが、viewWillAppearでreloadDataを呼び出すと、「解放されたインスタンス」エラーを引き起こす「cellForRow」および「numberOfRows」メソッドが呼び出されます。それは理にかなっていますか?ビューが表示されるよう要求されたときにモデルを変更できる場合は、通常はnilをチェックするコードを入れますか?

+0

本当に種類は、達成しようとしているものによって異なります。 – Gobot

+0

これは、私がiOSで見ている動作につながるものだと思います。ビューが表示されるたびに(顧客データがクライアントのセッションに保存される)、モデルデータが変更されるとします。 – Clay

+0

正確に割り当て解除されるのは何ですか?別のタブに移動しただけでテーブルビューがメモリから削除されることはなく、ビューコントローラ自体はビューがアンロードされたために割り当てが解除されません。あなたはどんなクラッシュを見ていますか? – jrturton

答えて

0

ビューがロードされたらテーブルをロードします。テーブルを読み込む前に、すべてのUIOオブジェクトを作成することができます。わかりませんが、テーブルは自動的にスーパービューでアンロードされます。

サーバーからデータソースを取得したり、どこかの前に、あなたはblankcell(あなたが404 WebページのようなSTHを描くことができ、細胞)とテーブルビューを表示することができ、この質問>>> Objective C - Correct way to empty and reload UITableViewController with NSMutableArray

+0

ロード間でデータが変更されない場合でも問題ありませんが、データが変更できる場合はどうなりますか。別のビューで変更されたモデルデータだとしましょう。 – Clay

0

を見てみましょうデータを取得したら、テーブルビューをリロードします。 ブランクセルのセル数を1に設定することを忘れないでください。

関連する問題