objective-c - 从 AppDelegate 推送到特定的 viewController

标签 objective-c ios

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

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/

相关文章:

ios - 自 iOS 7 发布以来,不会为添加到配置文件的设备安装临时 iOS .ipa 文件

objective-c - 测量 iOS 应用程序启动性能的规范方法?

ios - UIView 中需要 uitableview 分组背景吗?

ios - 以编程方式调用 UIView 的点击手势

ios - 并发请求中的进度条

android - ImageCache Nativescript核心模块使用方法

c++ - NSArray 如何取得 C++ 对象的所有权

ios - MKMapView - 在后台线程中添加注释

ios - iOS10如何跳转到系统设置位置服务?

objective-c - Cocoa 绑定(bind) - NSTableView - 交换值