从AppDelegate推送到特定的viewController

时间:2013-01-08 15:56:36

标签: objective-c ios

我的应用程序层次结构如下所示:

tabBarController >> navigationControllers (multiple) >> viewControllers (multiple)

appDelegate中发生某个事件时,我希望在其中一个navigationControllers中推送一个特定的viewController。现在我有这个:

UINavigationController *myNavigationController = [[(UITabBarController*)self.window.rootViewController viewControllers] objectAtIndex:0];

UIStoryboard *mainStoryboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle: nil];
StoreViewController *targetViewController = (StoreViewController*)[mainStoryboard instantiateViewControllerWithIdentifier:@"StoreViewController"];

[myNavigationController pushViewController:targetViewController animated:YES];

仅当应用程序当前与targetViewController位于同一个navigationController中时才有效。无论您在应用程序中的哪个位置,我希望它能够正常工作。谢谢!

1 个答案:

答案 0 :(得分:3)

在执行推送之前,您需要以编程方式切换到特定导航控制器所在的选项卡0。

UITabBarController *tbc = (UITabBarController*)self.window.rootViewController;
tbc.selectedIndex = 0;
UINavigationController *myNavigationController = tbc.selctedViewController;
etc......

上面的代码假定您要从特定的导航控制器(选项卡0中的那个)推送targetViewController,但如果您不关心哪个导航控制器将其推送,则只需删除tbc.selectedIndex = 0行。以下行将推送导航控制器当前所选的导航控制器。我不确定你的问题,你想要的。