无法从AppDelegate推送到View Controller而不会丢失导航栏和标签栏设置iOS

时间:2016-06-07 22:16:17

标签: ios objective-c uinavigationcontroller storyboard uitabbarcontroller

我尝试从app delegate推送到特定的视图控制器,而不会丢失先前设置的导航栏和标签栏项目设置。

如我的主要故事板中所示:

storyboard

在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)

1 个答案:

答案 0 :(得分:0)

为可见导航栏标签栏自定义MapViewController类:

- (instancetype)init
{
    // init code        
    self.hidesBottomBarWhenPushed = NO;
    retur self;
}

-(void)viewWillAppear:(BOOL)animated
{
    // some code
    [self.navigationController setNavigationBarHidden:NO];
}