ios - 双返回到上一个 View - Swift

标签 ios swift xcode uinavigationcontroller viewcontroller

我是 IOS 和 Swift 的新手,所以不要判断解决方案是否简单。

我有三个 ViewControllers,比如 A、B 和 C。

我从A -> NavigationController -> B -> NavigationController -> C开始

在特定情况下,我需要从 C 返回 A 而看不到 B。有什么办法可以做到这一点?

也许改变父导航 Controller ?也许我可以打印每个当前 View 的堆栈? - 这真的很有帮助。 我试着一个一个地关闭 C 和 B View ,它起作用了,但我们可以暂时看到 B View ——所以这对我来说不是一个解决方案。 P.s:我正在使用模态类型在 Controller 之间切换。

enter image description here

最佳答案

如果 A 总是第一个 View Controller ,你可以这样做:

viewcontrollerC.navigationController?.popToRootViewController(animated: true)

此方法将堆栈弹出到第一个 View Controller ,而不显示中间 View Controller

如果 A 不是第一个 viewController,你可以这样做:

viewcontrollerC.navigationController?. popToViewController(viewControllerA, animated: true)

如果您没有对 viewControllerA 的引用,请在堆栈中搜索它:

let viewControllerA: UIViewController? 

for (let vc in (self.navigationController?.viewControllers ?? [])) {
     //adust the test to find the appropriate controller
    if vc.isKindOf(ViewControllerAClass.self) {
          viewControllerA = vc
          break  
    }
}

if let viewControllerA = viewControllerA {
    self.navigationController?.popToViewController(viewControllerA, animated: true)
}

来源:https://developer.apple.com/documentation/uikit/uinavigationcontroller/1621871-poptoviewcontroller

关于ios - 双返回到上一个 View - Swift,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53727118/

相关文章:

ios - 添加 NSManagedObject 子类时出现重复符号错误,链接重复

ios - 游戏中心提交分数困惑

ios - Realm 架构版本 0 小于最后设置的版本 1 Swift

objective-c - 停止 UIView 动画

swift - iOS 上的 Firebase 短信验证 - 'Token Mismatch'

ios - 当该页面出现时,如何在 UISearchController 中自动启用搜索栏?

swift - 向右动画 UIScrollView

objective-c - @property 或 init 设置实例变量

ios - 使用 UserDefaults 设置全局变量

重新安装后的 iOS 推送通知设置