我是 IOS 和 Swift 的新手,所以不要判断解决方案是否简单。
我有三个 ViewControllers
,比如 A、B 和 C。
我从A -> NavigationController -> B -> NavigationController -> C开始
在特定情况下,我需要从 C 返回 A 而看不到 B。有什么办法可以做到这一点?
也许改变父导航 Controller ?也许我可以打印每个当前 View 的堆栈? - 这真的很有帮助。 我试着一个一个地关闭 C 和 B View ,它起作用了,但我们可以暂时看到 B View ——所以这对我来说不是一个解决方案。 P.s:我正在使用模态类型在 Controller 之间切换。
最佳答案
如果 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/