3

这个问题我问了几次,我尝试了几种不同的方法,但都没有成功。

我尝试过的最新方法如​​下:我包含了我想展示的 ViewController。然后我将此代码放入didReceiveRemoteNotification方法中。

    CarFinderViewController *pvc = [[CarFinderViewController alloc] init];
   // [self.window.rootViewController presentViewController:pvc animated:YES completion:nil];
    [(UINavigationController *)self.window.rootViewController pushViewController:pvc animated:NO];

这没有用。我认为我可能遇到的问题是我的初始视图不是像许多示例所示的导航控制器。

在此处输入图像描述

这是我的故事板的图片> 我要发送给用户的 VC 是汽车查找器(右下)

有人可以向我解释我可能做错了什么吗?

4

2 回答 2

5

didReceiveRemoteNotification当您在这样的发布通知中收到远程通知时,您基本上可以使用 postNotification

[[NSNotificationCenter defaultCenter] postNotificationName:@"pushNotification" object:nil userInfo:userInfo];

现在在您FirstViewController的中,您可以像这样为此通知注册 FirstViewController

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(pushNotificationReceived) name:@"pushNotification" object:nil];

在你的方法中

-(void)pushNotificationReceived{

CarFinderViewController *pvc = [[CarFinderViewController alloc] init];
[self presentViewController:pvc animated:YES completion:nil];

}

不要忘记在您的dealloc方法中从通知中删除观察者

-(void)dealloc {
[[NSNotificationCenter defaultCenter] removeObserver:self];
}
于 2013-02-28T15:53:43.583 回答
2

我认为最简单的解决方案是将其显示CarFinderViewController为模式视图,而不是尝试将其推送到当时可能可见或不可见的导航控制器。

避免进一步不一致的另一个重要点我建议您CarFinderViewController从情节提要中实例化您的实例,而不是直接通过类方法。

就像是:

UIViewController * vc = self.window.rootViewController;
// You need to set the identifier from the Interface
// Builder for the following line to work
CarFinderViewController *pvc = [vc.storyboard instantiateViewControllerWithIdentifier:@"CarFinderViewController"];
[vc presentViewController:pvc animated:YES completion:nil];
于 2013-02-28T16:27:43.747 回答