我想根据我从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
答案 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;
现在你可以推送到任何视图。