2009-08-03 17 views
3

私はこの1つで少し狂っています。iPhone viewDidモーダルビューを読み込んだり消したりした後に焼き込みを終了します

私は多少複雑なビュー構造を持つiphoneアプリケーションを持っています。これは、タブごとにビューコントローラまたはナビゲーションコントローラのタブ付きアプリケーションです。

1つのタブのメインコントローラは、viewDidAppearコールバックを使用して、最後に表示されてから変更されたデータをリロードします。ほとんどの場合、これは正常に動作します。私が実行した問題は、標準ナビゲーションコントローラのpush/popメカニズムを使って(同じタブ内の)サブビュー内をナビゲートすると、メインビューのviewWillAppearとviewDidAppearは常に戻ります。 しかし、モーダルビューコントローラを読み込んで閉じた後に、viewWillAppearは引き続き実行されますが、viewDidAppearは起動を停止します。

これは、これらのコールバックをモーダルコントローラで手動で呼び出す必要があることはほぼ確実ですが、これを正しく行う方法に関する参考情報は見つかりません。 (私は、ハードウェア上のこのviewDidAppearのバグを見るだけで、シミュレータでは期待どおりに動作します)

さらに詳しい説明が必要な場合は、私に何か入力していただきありがとうございます。

答えて

3

はい、これは動作します。あなたはviewWillAppearの使用に切り替えるほうが良いです。

これには、画面を再描画する前にデータを更新するという利点があります。

+0

私は実際にこれらのタイプの操作のすべてに対してviewWillAppearをかなり使用していましたが、ビューの再読み込み後にデータを更新することによってUIの応答性が大幅に改善されたため、viewDidAppearを使用するように変更しました。 – paulthenerd

+0

それは面白いです!これまでの私のアプリでは、viewWillAppearの使用にもっと反応しました。viewDidAppearを使用すると、ビューのスライドインが完了した後にしかテーブルが塗りつぶされなかったため(つまり、テーブルが読み込まれるまでに時間がかかるようになりました) – corydoras

0

のviewDidLoadは、ワンタイム・セットアップ操作に使用する必要があります。

  • はサブビュー、コンテンツアレイ
  • 問題のビューのインフラに関連する何か他のもの
をインスタンス化タイトル
  • を設定します

    その後、viewWillAppear:を使用して、データを更新することに関連する操作を行います。 viewDid/viewWillメソッドを手動で呼び出す必要はありません.UIViewの内部で処理されます。おそらくビューがアンロードされないため、モーダルビューコントローラを閉じた後にviewDidLoadは起動しません。 viewDidLoadは、新しいビューにメモリが必要で、他のビューをアンロードしてから再表示するときに再ロードする必要があるため、ビューコントローラスタックをナビゲートするときにはうまくいきます。

  • +0

    質問は、viewDidLoadやワンタイム設定操作に関するものではありませんでした。 –

    関連する問題