Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 当我想从推送通知启动时,如何处理RootView_Ios_Objective C_Uinavigationcontroller - Fatal编程技术网

Ios 当我想从推送通知启动时,如何处理RootView

Ios 当我想从推送通知启动时,如何处理RootView,ios,objective-c,uinavigationcontroller,Ios,Objective C,Uinavigationcontroller,我的应用程序有一个嵌入式导航控制器。我想启动一个特定的viewController,它不是初始视图或rootViewController - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions: (NSDictionary *)launchOptions { NSDictionary *dictionary = [launchOptions objectForKey:UIApplicationL

我的应用程序有一个嵌入式导航控制器。我想启动一个特定的viewController,它不是初始视图或rootViewController

- (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){
        ...
    }
}