0

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

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

当某个事件发生在appDelegate我想要在其中一个导航控制器中推送一个特定的视图控制器时。现在我有这个:

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 中时才有效。无论您在应用程序中的哪个位置,我都希望它能够工作。谢谢!

4

1 回答 1

4

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

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

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

于 2013-01-08T17:10:35.360 回答