5

私はアプリケーションに取り組んでいますが、アプリに戻ったときに 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 メソッドで「リソース」が解放されないことを確認してください。

4

1 に答える 1