推送通知后,从URL方案打开UIViewController

时间:2013-12-12 16:17:41

标签: ios uiviewcontroller uinavigationcontroller push-notification url-scheme

我想根据我从URL方案获得的ID打开一个特定的UIViewController。

例如,myapp:// news / 285会打开UIViewController“news”,显示这个特定的一个。

我在这里得到通知:

- (BOOL)application:(UIApplication *)application
            openURL:(NSURL *)url
  sourceApplication:(NSString *)source
         annotation:(id)annotation
{   
    if ([[url scheme] isEqualToString:@"myapp"]) {

        NSString *urlString = url.absoluteString;

...

        return YES;
    }

    return NO;
}

但是我该如何推动UIViewController呢?我无法从这里访问导航控制器。

(我正在考虑将带有NSNotficationCenter的通知发送到带有id的主页,然后从那里推送UIViewController。你怎么看?)

THX

3 个答案:

答案 0 :(得分:1)

你知道你查看设置。因此,当你的rootViewController是一个UINavigationController时,你可以使用:

UINavigationController *navCon = (UINavigationController*)self.window.rootViewController;
[navCon pushViewController:myPushedVC animated:NO];

如果没有,则可能更容易使用通知方法

答案 1 :(得分:1)

您可以通过NSNotificationCenter发送通知。您的视图控制器可以捕获该通知并推送另一个视图控制器。

答案 2 :(得分:1)

如果您使用的是标签栏,请使用以下代码。

UINavigationController *navigationController = (UINavigationController *) tabBar_Controller.selectedViewController;

您可以根据需要设置所选的视图控制器。

  

如果您没有使用标签栏

UINavigationController *navigationController = (UINavigationController*)self.window.rootViewController;

现在你可以推送到任何视图。