1

私は、デフォルトのビューにモーダルビューコントローラが先行する必要があり、時には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]; 
    } 

答えて

1

思ったとして、NSNotificationCenterの必要は、ありませんでした。複数のモーダルビューコントローラを表示しようとしましたが、エラーが発生しました。

モーダルビューコントローラAからモーダルビューコントローラBを表示すると、正常に動作します。私は親ビューコントローラからモーダルビューコントローラAとBを提示しようとしました。

代わりに階層にモーダルビューコントローラを表示する場合、NSNotificationCenterの必要はありません。ビューコントローラは自分自身を却下し、アニメーションは機能します。私はUIKitを自分の意志に合わせて曲げようとしています。

私の質問でコードを編集しましたが、これは正常に動作します。

関連する問題