私はXIBで初期化されたiPhoneビューコントローラを持っています。メモリ警告が吹き飛ばされた後、どのようにXIBからUIViewControllerのビューをリロードしますか?
メモリ警告が発生したときにビューコントローラのビューが表示されない場合、ビューはnil(解放)に設定されます。しかし、重複したビューが閉じられ、クリアされたビューが再び表示されると、CocoaはXIBからそのビューをリロードしません。単純に空白を作成します。これは空の白い画面と壊れたアプリを残します。
のUIViewControllerのloadViewメソッド方法のためのアップルのドキュメントは、ビューコントローラが関連付けられているnibファイルを持っている場合、このメソッドは、nibファイルからビューをロードする」と言う。nibNameプロパティが返す場合、ビューコントローラが関連付けられているnibファイルを持っていますnon-nil値。だからコントローラを初期化した後loadViewをnibNameに単にオーバーライドしてください。nibNameが正しいです。したがって、loadViewへのその後の呼び出しは、XIBから再ロードする必要があります。私は、メモリ警告の後にloadViewが再度呼び出されたことを確認しました。
UPDATE:より多くのテストとロギングでは、私は2番目のviewDidLoad呼び出した後、ビューのIBOutletsがnil以外であると判断しました。 viewDidUnloadでそれらをゼロに設定しているので、私はビューが実際にXIBから再ロードされたと結論づけます。だから、なぜそれは全面白い画面として表示されますか?
ありがとうございました。メモリ警告が開発者に対して透過的であるために仮定された後
- (void)viewDidUnload
{
[_photoViewController release];
[super viewDidUnload];
}
'viewDidUnload'を実装しましたか? – Costique
はい。問題は、リロードする方法です。 – Oscar
これを正しく実行すると、ビューは自動的に再読み込みされます。コントローラが表示されようとすると、ビューがアンロードされたことが検出され、自身に 'loadView'が送信されます。 'loadView'、' viewDidLoad'、 'viewDidUnload'にコードを表示してください。 – Costique