将 UINavigationController 添加到导航堆栈
Add UINavigationController to navigation stack
我有两个像这样的 UINavigationControllers:
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,所有这一切都可以无缝地发生在用户身上,而他们不会注意到正在创建登录?
如果不是,我是否应该以某种方式改变我的任务方法?
您可以使用这种方法无缝地获得所需的结果,
1) 将 HomeNavigationController
作为您应用的根视图控制器。
2) 在 HomeNavigationController
的第一个视图中说 HomeViewController
,覆盖 viewWillAppear
并检查是否需要显示登录视图(您可以通过将任何标志放在当用户进入背景或其他东西时为真)。
3) 如果您需要显示 LoginNavigationController
,请将其显示为没有动画的模态,例如
[self presentViewController: LoginNavigationController animated:NO completion:nil];
如果您发现任何令人困惑的地方,请告诉我。
我有两个像这样的 UINavigationControllers:
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,所有这一切都可以无缝地发生在用户身上,而他们不会注意到正在创建登录? 如果不是,我是否应该以某种方式改变我的任务方法?
您可以使用这种方法无缝地获得所需的结果,
1) 将 HomeNavigationController
作为您应用的根视图控制器。
2) 在 HomeNavigationController
的第一个视图中说 HomeViewController
,覆盖 viewWillAppear
并检查是否需要显示登录视图(您可以通过将任何标志放在当用户进入背景或其他东西时为真)。
3) 如果您需要显示 LoginNavigationController
,请将其显示为没有动画的模态,例如
[self presentViewController: LoginNavigationController animated:NO completion:nil];
如果您发现任何令人困惑的地方,请告诉我。