【问题标题】:Dismiss all view controllers below current view controller swift快速关闭当前视图控制器下方的所有视图控制器
【发布时间】:2018-08-01 12:36:27
【问题描述】:

我正在使用 UINavigationController。

假设我有这些堆栈

VC1 -> VC2 -> VC3 
VC1 -> VC3
VC1 -> VC2 -> VC4 -> VC3

在所有情况下,当它是当前视图控制器时,我如何关闭 VC3 以下的所有 VC。

VC3 连接到 TabBarController 如果这会有所不同。

【问题讨论】:

  • 您希望 VC3 TabBarController 作为根查看并使用 VC1 和 VC2 删除整个 UINavigationController 吗?
  • 差不多是@Amit
  • 在VC2中添加self.view.window?.rootViewController = TabBarController可以直接改变根View控制器。
  • 既然你有导航控制器,那么“关闭”视图控制器是什么意思?为什么需要这样做?
  • 我不希望用户从 VC3 上滑回来,但我不能禁用单个 VC 上的手势识别器。我会试试你的建议谢谢。

标签: swift uiviewcontroller uinavigationcontroller


【解决方案1】:

VC2,使用setViewControllers方法推送VC3并删除其余部分,

self.navigationController?.setViewControllers([VC3], animated: true)

【讨论】:

    【解决方案2】:

    您可以像这样从导航控制器堆栈中删除视图控制器: self.navigationController?.viewControllers.remove(at: index)

    【讨论】:

    • 对不起,我没有具体说明问题,但 VC3 以下的 VC 数量是模棱两可的。可以有 1 个视图控制器或 3 个视图控制器
    • 在这种情况下,您只需将 VC3 设置为唯一的 VC,如下面的答案。基本上,您应该通过设置setViewControllers 来设置数组,在您的情况下使用最顶层的 VC 来设置 VC3。
    【解决方案3】:

    在您的场景中,最好将应用程序的根视图从UINavigationController 更改为UITabBarcontroller

    您可以通过任何VC 来实现:

    self.view.window?.rootViewController = TabBarController
    

    要了解更多信息,您可以查看此链接:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-05-30
      • 2014-10-03
      • 2020-10-21
      • 2016-11-27
      • 2017-07-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多