2009-06-30 16 views
1

ViewControllerをナビゲーションコントローラにプッシュすると、 View ControllerのviewDidLoad()メソッドが呼び出されないことがあります。 これは私のアプリケーションがクラッシュする原因となります。助けていただければ幸いです。View Controllerをナビゲーションコントローラにプッシュ

ナビゲーションコントローラにプッシュする前に、ペン先からビューをロードすることに言及しておきます。

おかげで、 サラ

答えて

6

ビューが最初のnibファイルからロードされたときviewDidLoadメソッドはのみ呼び出されます。ビューが既にロードされていて、ビューを再度押すと、再び表示されません。 あなたのやりたいことに応じて、代わりにviewWillAppearまたはviewDidAppearを使用します。

+0

ViewDidLoadは、たとえXIBが全く関わっていなくても、ViewControllerがinit'edのときに呼び出されます。 – mmc

+0

viewDidLoadは、loadViewの直後に呼び出されます。これは、初めて.viewプロパティにアクセスされたときに呼び出されます。 loadViewのデフォルトの実装では、nibファイルがロードされます(ビューコントローラを挿入したときにnibファイル名を指定した場合)。ただし、loadViewをオーバーライドしてコード内でビューを作成できます。 –

2

ビューがロードされてコントローラのスタックに追加されると、これは再び呼び出されません。スタックからポップするためにはビューが必要で、それを見るために再びプッシュします。 viewWillAppearは、ビューに戻るたびに呼び出されます。これは、あなたが順番になるかもしれないすべての家事をすることを可能にします(私は目標であると仮定します)。

+0

これは間違っています - viewDidLoadは一度だけ呼び出されます(後でビューを解放してメモリを解放しない限り)。 Diedrik Hoogenboomにはそれが正しいです。 –

+1

これはまさに私が書いたものです。私はそれが一度呼ばれ、ビューに戻るときに何かをするためにviewWillAppearを実装する必要があると言いました。投稿をお読みください。 – MystikSpiral

関連する問題