プッシュ通知を受け取るアプリがあります。 didReceiveRemoteNotificationsで、アプリのナビゲーションコントローラー(たまたまルートビューコントローラー)に特定のビューコントローラーを表示するようにしたいと思います。これを実現する最良の方法は何ですか?アプリのデリゲートでナビゲーションコントローラーへの参照を取得できますか?
編集:ここに私が今使用しようとしているコードがあります。正しいナビゲーションコントローラを使用しているように見えますが、ビューコントローラはまったく表示されず、空白の画面が表示されます。
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
EventDetailViewController *destCon = [storyboard instantiateViewControllerWithIdentifier:@"EventDetailViewController"];
destCon.event=notifyEvent;
UINavigationController *navController =(UINavigationController *) self.window.rootViewController;
[navController pushViewController:destCon animated:YES];
これが私が見ているものです:
ナビゲーションコントローラーがウィンドウのルートビューコントローラーである場合は、
(UINavigationController *)self.window.rootViewController
アプリデリゲートから、ストーリーボードで作成したものにアクセスします。
私はそれが私のために働く以下のようなものを使用します、あなたの使用法に合わせて変更してみてください
Stoaryboard
はストーリーボードの名前です。通知を受け取ったら、ルートビューを呼び出すことができますLoginViewController
以下の例では、インターフェースビルダーのビューコントローラーがyourControllerName
に設定されていることを確認してくださいLoginView
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo
{
//replace and Push rootview manually
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Storyboard" bundle:nil];
LoginViewController *ivc = [storyboard instantiateViewControllerWithIdentifier:@"LoginView"];
UINavigationController *navigationController=[[UINavigationController alloc] initWithRootViewController:ivc];
self.window.rootViewController =nil;
self.window.rootViewController = navigationController;
[self.window makeKeyAndVisible];
}