Ios 当我想从推送通知启动时,如何处理RootView
我的应用程序有一个嵌入式导航控制器。我想启动一个特定的viewController,它不是初始视图或rootViewControllerIos 当我想从推送通知启动时,如何处理RootView,ios,objective-c,uinavigationcontroller,Ios,Objective C,Uinavigationcontroller,我的应用程序有一个嵌入式导航控制器。我想启动一个特定的viewController,它不是初始视图或rootViewController - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions: (NSDictionary *)launchOptions { NSDictionary *dictionary = [launchOptions objectForKey:UIApplicationL
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions: (NSDictionary *)launchOptions
{
NSDictionary *dictionary = [launchOptions objectForKey:UIApplicationLaunchOptionsRemoteNotificationKey];
if (dictionary != nil)
{
UIViewController *rootController = (UIViewController *)self.window.rootViewController;
UIViewController *notificationController = [rootController.storyboard instantiateViewControllerWithIdentifier:@"NotificationsViewController"];
[rootController presentViewController:notificationController animated:NO completion:^{
}];
}
}
我知道我必须在这里输入代码,但我不确定如何准确地编码它。有人能帮忙吗?我得到了错误代码:
Warning: Attempt to present <NotificationsViewController: 0x176883a0> on <SWRevealViewController: 0x17683750> whose view is not in the window hierarchy!
警告:尝试显示其视图不在窗口层次结构中的对象!
SWRevealViewController是我的边栏视图库。我猜我的“根”不是我想的那样
如果我想将viewControllerX设置为我的根视图,我该如何实现这一点?您应该首先初始化您的根视图控制器
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
YourViewControllerX * viewControllerX = [[YourViewControllerX alloc] init];
self.window.rootViewController = viewControllerX;
[self.window makeKeyAndVisible];
试一试
有一件事需要问。当应用程序在没有选项的情况下启动时,它是如何工作的???据我所见,当launchOptions为nil时,没有代码可以运行。接下来,您需要在调用self.window.rootViewController之前首先创建一个UIWindow实例。
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions: (NSDictionary *)launchOptions{
[self.window addSubview:self.window.rootViewController.view];
[self.window makeKeyAndVisible];
NSDictionary *dictionary = [launchOptions objectForKey:UIApplicationLaunchOptionsRemoteNotificationKey];
if (dictionary != nil){
...
}
}