【发布时间】:2016-10-08 00:02:54
【问题描述】:
我尝试从应用代理推送到特定的视图控制器,而不会丢失之前设置的导航栏和标签栏项目设置。
如我的主要故事板中所述:
在 TypeNameVC 中执行 1 次操作后,在应用重新启动时,我想跳过 AppDelegate 中 didFinishLaunchingWithOptions 中的 LogInVC 和 TypeNameVC 转发到 MapViewController 或选项卡栏控制器的任何其他 VC。
此代码使用新的导航栏初始化新的导航控制器,但缺少标签栏控制器。
UINavigationController *navigationController = (UINavigationController *)self.window.rootViewController;
//To instantiate Main.storyboard.
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
//To instantiate VC to go to.
MapViewController *mapVC = (MapViewController *)[storyboard instantiateViewControllerWithIdentifier:@"MapViewControllerID"];
//To push to instantiated VC.
[navigationController pushViewController:mapVC animated:YES];
我尝试performSegue 使用 segue 到选项卡栏控制器,但在导航控制器堆栈上只有 LoginViewController(我用 [navigationController viewControllers] 检查它)
我通读了整个 Stack Overflow,我做了几十种组合,但我无法找出解决方案。我将不胜感激任何帮助/建议。
更新问题 屏幕:screen
看一下屏幕图像。如果我“正常”导航,屏幕的第一行显示了它的外观。第二行显示如果我从 AppDelegate 推送到 MapVC 会发生什么。我需要的是跳过前两个 VC,维护导航和标签栏设置。
当我“正常”导航标签栏控制器时,它的 VC 得到了正确分配。
2016-06-08 12:37:44.394 检查点 [4196:1034786] 导航控制器 VC 的:(
登录视图控制器:0x135d50b00,
类型名称视图控制器:0x135f455b0,
UITabBarController: 0x135f1d180
)
2016-06-08 12:37:44.394 检查点 [4196:1034786] 选项卡栏控制器 VC 的:(
MapViewController: 0x137078cf0,
PlacesTableViewController: 0x135f1d7d0,
FriendsTableViewController: 0x137083350
)
当我直接推送到 MapVC 时,他们不会。我确实明白发生了什么,但我知道如何编写该解决方案。
导航控制器 VC 的:(
登录视图控制器:0x15fd5ccf0,
MapViewController: 0x15fd6ffa0
)
2016-06-08 12:31:53.813 检查点 [4187:1033755] 标签栏控制器 VC 的:(null)
【问题讨论】:
标签: ios objective-c uinavigationcontroller storyboard uitabbarcontroller