0

UINavigationControllerのルートビューコントローラに表示されるUIViewControllerの配列があります。スタックにプッシュするコントローラの1つに問題があります。 viewDidLoadを実行するたびにUIImagePickerControllerを表示する必要がありますが、最初のプッシュだけです。私は私のルートビューコントローラにUINavigationControllerDelegateを実装してこの問題を回避するには、次のViewControllerライフサイクルUINavigationController

- (void)navigationController:(UINavigationController *)navigationController didShowViewController:(UIViewController *)viewController animated:(BOOL)animated { 
    [viewController viewDidAppear:animated]; 
} 

- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated { 
    [viewController viewWillAppear:animated]; 
} 

問題は、それが二回第一プッシュこれらのメッセージは...そう素晴らしいことだ呼び出すです。私は何が欠けていますか?

答えて

0

おそらく、viewDidLoad:の代わりに、viewDidAppear:でUIImagePickerControllerを表示したいとします。 View Controllerを配列内に保持するので、viewDidLoad:は各View Controllerで一度しか呼び出されません。 viewDidAppear:ビューコントローラがプッシュまたは提示されるたびに呼び出されます。

あなたのアプリがメモリ不足の状況に陥った場合、viewDidUnload:はある時点で呼び出され、viewDidLoadにつながる可能性があります:後でもう一度呼び出されますが、これに全く頼ることはできません。

関連する問題