ios - 从 NavigationController 后退按钮返回多个 ViewController

标签 ios swift uinavigationcontroller poptoviewcontroller

当我点击 NavigationController 上的后退按钮时,我想返回两个 ViewController,而不是一个。

  override func viewWillDisappear(_ animated: Bool)
    {
        super.viewWillDisappear(animated)

        if self.isMovingFromParent
        {
            let vc = self.navigationController?.viewControllers[1] as! MyViewController

            self.navigationController?.popToViewController(vc, animated: false)
        }
    }

这几乎按照我想要的方式工作。更改 self.navigationController?.viewControllers[1] 让我可以转到堆栈中的任何 ViewController。我遇到的唯一问题是它总是在直接转到我弹出的 ViewController 之前简要显示最顶层的 viewController。如何阻止它显示中间 ViewController?

我的问题是:

VC[0] → VC[1] → VC[2] → VC[3]

我想从 3 直接返回到 1 而不必显示 2。我想通过 NavigationController 后退按钮执行此操作。

最佳答案

如果堆栈中有一个 viewController,您可以使用类名返回到它。

let viewControllers: [UIViewController] = self.navigationController!.viewControllers ;
for aViewController in viewControllers {
    if(aViewController is HomeViewController){
       self.navigationController!.popToViewController(aViewController, animated: true);
    }
}

关于ios - 从 NavigationController 后退按钮返回多个 ViewController,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57759447/

相关文章:

iOS:自动布局:当有足够的空间时,两个按钮并排,否则彼此重叠

android - iOS 和 Android 无需连接即可访问的蓝牙设备是否有唯一标识符?

ios - 如何在 Swift 2.0 中获取错误消息?

ios - 如何检测快速点击了哪个图像

ios - Swift - 核心数据播种类

ios - 自定义导航栏不是矩形

ios - Swift:iOS Facebook 版本编译器错误

ios - 在另一个 ViewController 中从一个 ViewController 控制 vars/IBOutlets

iphone - 为什么只有 viewWillAppear 在返回导航时被调用

ios - 在导航 Controller 中堆叠 UIImagePickerController?