当rootViewController不是UINavigationController时推送视图

时间:2013-04-18 18:06:42

标签: ios storyboard apple-push-notifications appdelegate

好吧,所以我一直在寻找以下问题的答案:当AppDelegate的推送通知到达时,如何将某个视图控制器推入视图?

大多数答案是,如果rootViewController是一个UINavigationController,我必须通过我的StoryBoard实例化一个视图并用该根导航控制器推送它。

这是我的情况。以下是我的故事板的组织方式:

enter image description here

因为你看到我的rootViewController没有UINavigationController。那么,我该如何从我的故事板中推出某个视图呢?

注意:为推送通知提供一些单独的模态视图并不是一个好主意。这是我的最后一招。

我想要Apple Mail和Message应用程序中的解决方案。

1 个答案:

答案 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,或者推送某个视图控制器(如果它是导航单元)。

希望这可以帮助任何有类似问题的人。 干杯!