【问题标题】:Navigation Stack in IOS7IOS7中的导航栈
【发布时间】:2024-01-19 22:01:01
【问题描述】:

如果我呈现一个带有视图控制器的控制器,它是 self.navigationcontroller 堆栈的一部分吗?

本质上:

UBSLoginViewController* loginView = [[UBSLoginViewController alloc] initWithNibName:LOGINVIEW bundle:nil];
    UINavigationController* navigation = [[UINavigationController alloc] initWithRootViewController:loginView];
    navigation.navigationBarHidden = YES;
    self.window.rootViewController = navigation;
    [self.window makeKeyAndVisible];
[loginView presentViewController:[[UBSLoadingViewController alloc] initWithNibName:LOADINGVIEW bundle:nil] animated:YES completion:nil];

加载视图是导航堆栈的一部分吗?本质上,我想展示一个不属于根导航堆栈的模式视图。

【问题讨论】:

  • 看起来你的窗口的根视图控制器是一个导航控制器。您在 LoginViewController 上展示您的 LoadingViewController,它是导航控制器的根视图控制器。这样就清楚了吗?
  • @CrimsonChris 那么这是否意味着加载视图是导航堆栈的一部分?所以如果我要弹出一个视图控制器返回,它会弹出加载视图吗?
  • 您可以告诉 LoadingViewController 自行关闭,或者您可以(应该)让呈现它的东西(LoginViewController)来做。
  • @chrimsonchris 是的,我知道所有这些,但它是导航堆栈的一部分,还是与 popViewController 等导航控制器功能分开?

标签: ios ios7 uiviewcontroller uinavigationcontroller navigation


【解决方案1】:

如果我呈现一个带有视图控制器的控制器,它是 self.navigationcontroller 堆栈?

没有。

您需要将视图控制器推送到您的 UINavigationController 上,以便它位于导航控制器的堆栈中。现在,您正在以完全不同的概念在视图控制器上进行模态呈现。

推送到导航控制器看起来像这样。

[self.navigationController pushViewController:loadingViewController animated:YES];

【讨论】:

    最近更新 更多