我的应用程序层次结构如下所示:
tabBarController >> navigationControllers (multiple) >> viewControllers (multiple)
当 appDelegate
中发生某个事件时,我想在其中一个 navigationController 中推送一个特定的 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 中时才有效。无论您在应用程序中的哪个位置,我都希望它能够正常工作。谢谢!
最佳答案
在执行推送之前,您需要以编程方式切换到特定导航 Controller 所在的选项卡 0。
UITabBarController *tbc = (UITabBarController*)self.window.rootViewController;
tbc.selectedIndex = 0;
UINavigationController *myNavigationController = tbc.selctedViewController;
etc......
上面的代码假设你想从一个特定的导航 Controller (选项卡 0 中的那个)推送 targetViewController,但是如果你不关心哪个导航 Controller 推送它,那么只需删除 tbc.selectedIndex = 0 行。以下行将从当前选择的导航 Controller 推送。我不确定你的问题是你想要的。
关于objective-c - 从 AppDelegate 推送到特定的 viewController,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14218966/