2

私は、アクティブなインターネット接続がある場合にのみユーザーがプレイできるゲームをコーディングしています。すべての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];

不可能である。

編集:あるいは、アプリケーションを新しく起動する場合のように、すべてを閉じて解放し、最初から開始することもできます。これはより良いアプローチですか?どのくらい正確にそれをしますか?

ありがとうございました。

4

1 に答える 1

2

OK私はそれを解決しました。単に電話する

[self dismissModalViewControllerAnimated:NO];

loginViewControllerで、メインビューコントローラとスタック上の上記のすべてのコントローラを閉じます。

于 2012-09-18T00:12:25.257 に答える