アプリの起動時、およびユーザーがホームボタンを押してアプリを再起動した後に再びアクティブになったときに、モーダルビューコントローラー(ログイン画面用)を表示したいと思います。
私は最初に、ルートビューコントローラのviewDidAppear:
メソッドでモーダルビューを表示しようとしました。これは、アプリが最初に起動したときにうまく機能しますが、アプリが再びアクティブになったときにこのメソッドは呼び出されません。
- (void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
[self presentModalView];
}
- (void)presentModalView {
if(![AuthenticationService sharedInstance].isAuthenticated) {
_modalVC = [self.storyboard instantiateViewControllerWithIdentifier:self.modalViewControllerIdentifier];
_modalVC.delegate = self;
[self presentViewController:_modalVC animated:YES completion:nil];
}
}
applicationDidBecomeActive:
次に、メソッド内のアプリデリゲートからこれを呼び出そうとしました。
- (void)applicationDidBecomeActive:(UIApplication *)application
{
// Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface.
ModalPresentingUISplitViewController *splitViewController = (ModalPresentingUISplitViewController *)self.window.rootViewController;
[splitViewController presentModalView];
}
これは表面上は正常に機能しているように見えますがUnbalanced calls to begin/end appearance transitions for <ModalPresentingUISplitViewController: 0x7251590>
、ログに警告が表示されます。UISplitViewがそれ自体の表示を終了する前に、どういうわけかモーダルビューを表示しているように感じますが、これを回避する方法がわかりません。
アプリがアクティブになったときにルートビューコントローラーからモーダルビューを「自動的に」表示し、分割ビューコントローラーのバランスを崩さないように「適切な」タイミングで表示するにはどうすればよいですか?