私はアプリケーションに取り組んでいますが、アプリに戻ったときに view[Will/Did]Disappear メソッドが起動されないという問題があります。
実際には、2 つのビュー コントローラーがプッシュされている UINavigationController があります。ユーザーがホームボタンを押すと、ユーザーはログアウトされます。彼が後でアプリに戻ると、次の (簡略化された) コードが AppDelegate で実行されます。
- (void)applicationDidBecomeActive:(UIApplication *)application
{
[(UINavigationController *)self.window.rootViewController popToRootViewControllerAnimated:NO];
[self.window.rootViewController presentModalViewController:loginViewController animated:NO];
}
view[will|did]disappear
ナビゲーション コントローラー スタックでビュー コントローラーをポップすると、メソッドが呼び出されることが予想されます。ただし、iOS がこれらのメソッドを起動しようとしているときに、(明らかに) もう画面に表示されていないため、これは当てはまりません。モーダルView Controllerが引き継いだようです。
モーダル ビュー コントローラーを提示しない場合、view[will|did]disappear
メソッドは期待どおりに呼び出されます。
私の質問は次のとおりです。メソッドを呼び出したい場合view[will|did]disappear
、コードをどのように構造化できますか? 私のモーダルloginViewControllerを提示するより良い場所はありますか?
編集:
私の問題をより明確に示すために、ここに非常に単純なテスト プロジェクトを作成しました: https://github.com/JohanVase/ModalViewCauseMissingViewDisappearCalls。アプリの指示に従って数回試してみてください。viewWillDisappear メソッドで「リソース」が解放されないことを確認してください。