私は、アクティブなインターネット接続がある場合にのみユーザーがプレイできるゲームをコーディングしています。すべてのViewControllerを閉じて、インターネットステータスが変更された場合はログイン画面に戻りたいです。階層は次のとおりです。
私のアプリデリゲートは、次の方法でLoginViewControllerを表示します。
self.window.rootViewController = loginViewController;
[self.window makeKeyAndVisible];
ここでユーザーがログインします。ログイン中に接続を確認し、エラーを処理します。ログインが成功した場合、loginViewControllerはmainViewControllerを使用して提示します
[self presentModalViewController:self.mainViewController animated:YES];
次に、mainViewControllerは他のコントローラーを提示し、他のコントローラーなどを提示できます。presentanddismissルーチンは正しく機能しています。
ここで、到達可能性ステータスが変更された場合、アラートを表示して、アプリを強制的にログイン画面に戻したいと思います。私はこれらの通知を聞き、適切に行動する方法を知っています。それは十分に文書化されています:)
ログイン画面に戻るまで、すべてのView Controllerを閉じるにはどうすればよいですか?すべてのViewControllerで通知をリッスンし、個別に閉じる必要がありますか?親(アプリデリゲートなど)で通知をキャッチし、そこからすべてのView Controllerを(事前にすべてへの参照を保持せずに)却下する方法はありますか?
明らかに、私はnavigationControllerを使用していないので
[self.navigationController popToRootViewControllerAnimated:NO];
不可能である。
編集:あるいは、アプリケーションを新しく起動する場合のように、すべてを閉じて解放し、最初から開始することもできます。これはより良いアプローチですか?どのくらい正確にそれをしますか?
ありがとうございました。