2012-01-14 13 views
0

4つのView Controllerを順番に提示する必要があります。 1つは他のものの続きです。それらはnavigationControllerによって提示されます。iphone - キャッシュされたUIViewControllers?

A> B> C> D

私はAに、そしてBへ、そしてCに行き、私はC、それはより速く二度目の出現に戻ったとき、バックBに行けば。私はすべてのCがキャッシュされているとか、何とか記憶していると思います。この問題は、たとえば、CがUIImagePickerControllerを初めて呼び出すときに2番目の呼び出しではなく呼び出すということです。どうして?

UIImagePickerControllerは

ようなラインによって、Cの内部のviewDidLoad提示されている[self.navigationController presentModalViewController:ピッカーがアニメーション:YES]。

しかし、明らかに、Cが「キャッシュされている」場合、viewDidLoadは2回目は実行されません。これが最初の場合を除き、ピッカーが呼び出されていない理由です。

キャッシュされたVCのアイデアは好きですが、前進するのが速いので大丈夫ですが、どこでピッカーに電話をかけたらいいですか?私はそれがviewWillAppearであると思ったが、私はそれを試みたが、このメソッドは決して呼び出されない。

任意のアイデア?ありがとう

答えて

1

ダブルチェックviewDidAppear:。これは、記述しているコードの正しい場所です。それが呼び出されていない場合は、間違ったことをしているか、メソッドに間違った署名を使用していることを示唆しています。

+0

viewDidAppearは、初めてではなく、いつでも呼び出されているわけではなく、それ以降のビューコントローラーが表示されるわけではありません。これはとても単純なことですが、間違っているかもしれないことは良い質問です。 – SpaceDog

+0

問題を発見しました:viewDidAppearヘッダーのタイプミス!ありがとう。 – SpaceDog

1

viewDidLoadの呼び出しを省略するようなキャッシングはありません。ブレークポイントはいつでもそこに置くことができ、呼び出されるかどうかを確認することができます。

+0

私はそこにブレークポイントがあり、viewDidLoadはビューコントローラーが最初に表示されることになりますが、それ以降の時刻は表示されません。 – SpaceDog

関連する問題