无法从AppDelegate呈现视图控制器

时间:2016-07-11 10:15:20

标签: ios iphone push-notification apple-push-notifications uistoryboard

我需要从app delegate提供一个视图控制器。

当手机通知进来时,我可以通过分析用户信息来判断3个视图控制器中的哪一个(名为ForumViewController,BlogViewController& NewsViewController)。在方法' didReceiveRemoteNotification'。

但是当我尝试使用故事板或下面的代码呈现适当的视图控制器时:

self.viewController = [[MembersViewController alloc] initWithNibName:@"MembersViewController" bundle:nil];
        self.window.rootViewController = self.viewController;
        [self.window makeKeyAndVisible];

然后,应用程序发出错误'警告:尝试显示其视图不在窗口层次结构中!'。它也卡在特定的视图控制器上。

请记住,我尝试呈现的视图控制器不是应用程序启动时的流程的一部分(流程是LogoViewController - > SplashViewController - > HomeViewController)。

HomeViewController& MembersViewController本质上是public&的主菜单页面。私人观看。在这里,我必须向观众展示一些东西。

2 个答案:

答案 0 :(得分:1)

<强>选择-1

使用推送

 UINavigationController *navController = (UINavigationController *)self.window.rootViewController;
MembersViewController *vc = [navController.storyboard instantiateViewControllerWithIdentifier:@"MembersViewController"];

[navController pushViewController:vc animated:YES];

使用礼物

MembersViewController *root = (MembersViewController *)self.window.rootViewController;
UIViewController *vc = [root.storyboard instantiateViewControllerWithIdentifier:@"MembersViewController"];

[root presentViewController:vc animated:YES completion:NULL];  

<强> upadted

  UIStoryboard *mainstoryboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
MembersViewController* pvc = [mainstoryboard instantiateViewControllerWithIdentifier:@"MembersViewController"];
[self.window.rootViewController presentViewController:pvc animated:YES completion:NULL];

答案 1 :(得分:1)

从故事板加载视图控制器:

[self performSelector: @selector(ShowModalViewController) withObject: nil afterDelay: 0];

-(void)ShowModalViewController{
 NSString * storyboardName = @"MainStoryboard"; 
    UIStoryboard *storyboard = [UIStoryboard storyboardWithName:storyboardName bundle: nil];
    UIViewController * vc = [storyboard instantiateViewControllerWithIdentifier:@"IDENTIFIER_OF_YOUR_VIEWCONTROLLER"];
    [self.window.rootViewController presentViewController:vc animated:YES completion:nil];
}

视图控制器的标识符等于视图控制器的类名,或者可以在故事板的标识检查器中指定的故事板ID。