好吧,所以我一直在寻找以下问题的答案:当AppDelegate的推送通知到达时,如何将某个视图控制器推入视图?
大多数答案是,如果rootViewController是一个UINavigationController,我必须通过我的StoryBoard实例化一个视图并用该根导航控制器推送它。
这是我的情况。以下是我的故事板的组织方式:
因为你看到我的rootViewController没有UINavigationController。那么,我该如何从我的故事板中推出某个视图呢?
注意:为推送通知提供一些单独的模态视图并不是一个好主意。这是我的最后一招。
我想要Apple Mail和Message应用程序中的解决方案。
答案 0 :(得分:0)
好吧,我想我不会轻易放弃:)这是我发现问题的解决方案。由于我在模态视图控制器中呈现我的主要应用程序视图,这就是我所做的:
从iOS 5开始,每个视图控制器都有presentedViewController
属性。一旦你知道了,那就很容易了。
以下是AppDelegate.m
- (void) application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo {
if ([[userInfo objectForKey:@"notificationType"] isEqualToString: @"messageType"]) {
UITabBarController * tabBarController = (UITabBarController *)[self.window.rootViewController presentedViewController];
[tabBarController setSelectedIndex:kChatViewIndex];
// My view controller that I presented modally is a tabBar, your case can be different.
// ... so from here I can reach any navigation controller or any other view from inside my app
}
既然你有了你的视图控制器,你可以使用setSelectedIndex:如果它是tabBarController,或者推送某个视图控制器(如果它是导航单元)。
希望这可以帮助任何有类似问题的人。 干杯!