将UINavigationController添加到导航堆栈

时间:2015-06-08 09:35:13

标签: ios objective-c uinavigationcontroller rootview

我有两个这样的UINavigationControl:

LoginNavigationController -> LoginView
HomeNavigationController -> HomeView -> ...

从LoginView我按照以下方式导航到HomeView:

[self presentViewController:HomeNavigationController animated:YES completion:nil];

当应用程序进入后台时,我使用LoginView中的观察者来解散HomeNavigationController。

但是有一种情况,我必须直接呈现HomeNavigationController,而不要求用户登录。我从另一个故事板中执行此操作并重置我的根视图控制器:

AppDelegate *appDelegate = [UIApplication sharedApplication].delegate;
UIStoryboard *secondStoryboard = [UIStoryboard storyboardWithName:kStoryMain bundle:nil];
UINavigationController *homeViewController = (UINavigationController *)[secondStoryboard instantiateViewControllerWithIdentifier:kControllerHomeNavigation];
appDelegate.window.rootViewController = homeViewController;
[appDelegate.window makeKeyAndVisible];

但是当应用程序进入后台时,我仍然必须重定向到LoginView。

有没有办法重定向到LoginNavigationController,添加观察者并以模态方式呈现HomeNavigationController,所有这些都无缝地为用户发生,而他们没有注意到正在创建Login? 如果没有,我应该以某种方式改变我的任务方法吗?

1 个答案:

答案 0 :(得分:0)

您可以使用此方法无缝地获得所需的结果,

1)将HomeNavigationController设为您应用的根视图控制器。

2)在HomeNavigationController的第一个视图中说HomeViewController,覆盖viewWillAppear并检查是否需要显示登录视图(您可以通过将任何标记置为true来检查此项用户进入背景或某事)。

3)如果您需要显示LoginNavigationController,请将其显示为没有动画的模态,

[self presentViewController: LoginNavigationController animated:NO completion:nil];

如果您发现令人困惑的事,请告诉我。