私は、デフォルトのビューにモーダルビューコントローラが先行する必要があり、時には2つのモーダルビューコントローラが必要なアプリケーションデリゲートを持っています。したがって、アプリケーションデリゲートのdidFinishLaunchingWithOptions
では、最初のモーダルビューコントローラが必要かどうか、その場合は表示されているかどうかを確認しています。複数のモーダルを提示するためのNSNotificationCenter?
([self dismissModalViewControllerAnimated:YES];
を使用して)最初のモーダルビューコントローラを終了すると、2番目のモーダルビューコントローラを表示することができます。これは、アプリケーションデリゲートによっても知られています。
私の解決策は、NSNotificationCenter
を使用して、最初のモーダルビューコントローラが終了したことをアプリケーション代理人に伝えることでした。これが起こると、必要に応じて、アプリケーションデリゲートによって第2モーダルビューコントローラが表示されます。
正常に動作しますが、よりクリーンなソリューションがありますか?私はNSNotificationCenter
が本当に醜いものだと思う。
私は第1のAND didFinishLaunchingWithOptions
の内部二モーダルビューコントローラを表示しようとした一回
に複数のモーダルView Controllerを表示するに注意、私は働いて、それをやったことがなかったです。ここに私が試したものです:
- (BOOL)application:(UIApplication *)application
didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
[window setRootViewController:tabBarController];
[self.window makeKeyAndVisible];
[tabBarController presentModalViewController:pinViewController animated:NO];
if([self needsActivation]) {
[tabBarController presentModalViewController:activationViewController
animated:YES];
}
}
UPDATE:上記のコードは、次の補正で動作します。この特定のケースで
if([self needsActivation]) {
[pinViewController presentModalViewController:activationViewController
animated:YES];
}