我尝试从app delegate推送到特定的视图控制器,而不会丢失先前设置的导航栏和标签栏项目设置。
如我的主要故事板中所示:
在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];
我尝试使用segue到Tab Bar Controller performSegue
但在导航控制器堆栈上只有LoginViewController(我用[navigationController viewControllers]
检查了它)
我阅读了整个Stack Overflow,我做了几十个组合,但我无法找到解决方案。我将不胜感激任何帮助/建议。
更新的问题 屏幕:screen
查看屏幕图像。屏幕的第一行显示了如果我导航"通常"它的样子。第二行显示如果我从AppDelegate推送到MapVC会发生什么。我需要的是在保持导航和标签栏设置的情况下跳过前两个VC。
当我导航"通常"标签栏控制器和它的VC被正确分配。
2016-06-08 12:37:44.394 Checkpoint [4196:1034786]导航控制器VC :(
LogInViewController:0x135d50b00,
TypeNameViewController:0x135f455b0,
UITabBarController:0x135f1d180
)
2016-06-08 12:37:44.394 Checkpoint [4196:1034786] Tab Bar Controller VC'(
MapViewController:0x137078cf0,
PlacesTableViewController:0x135f1d7d0,
FriendsTableViewController:0x137083350
)
当我直接推送到MapVC时,他们不会。我确实知道了什么,但我知道如何编写解决方案。
导航控制器VC :(
LogInViewController:0x15fd5ccf0,
MapViewController:0x15fd6ffa0
)
2016-06-08 12:31:53.813 Checkpoint [4187:1033755]标签栏控制器VC' :( null)
答案 0 :(得分:0)
为可见导航栏和标签栏自定义MapViewController类:
- (instancetype)init
{
// init code
self.hidesBottomBarWhenPushed = NO;
retur self;
}
-(void)viewWillAppear:(BOOL)animated
{
// some code
[self.navigationController setNavigationBarHidden:NO];
}