首页 文章

从AppDelegate推送到特定的viewController

提问于
浏览
0

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

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 回答

  • 3

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

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

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

相关问题