swift 清除/移除NavigationController中的多个ViewController

s5a0g9ez  于 2023-09-30  发布在  Swift
关注(0)|答案(1)|浏览(147)

我希望你能帮助我解决这个问题。
我正在使用多个ViewController开发这个iOS应用程序,如下图所示。

我从VC 1导航到VC 2,VC 2导航到VC 3,直到我到达VCn。当我到达这个ViewController时,我需要转到VC 4。我知道我可以用一个segue到VC 4,但问题是它会存储在导航堆栈中,这是我想避免的。
如何从VCn导航到VC 4,同时清除导航堆栈(VC 2、VC 3…VCn),然后从VC 4?
我希望你能帮助我!😄

2eafrhcq

2eafrhcq1#

您所需要做的就是将导航控制器的viewControllers属性设置为两个元素的数组-根视图控制器(VC 1)和新的VC 4。

if let navigationController {
    let vc4 = ... // initialise VC4 appropriately
    // make the array
    let newStack = [navigationController.viewControllers[0], vc4]
    // this sets viewControllers, with a "push" transition
    navigationController.setViewControllers(newStack, animated: true)
}

如果你想要一个“pop”过渡,首先删除viewControllers中除了第一个和最后一个元素之外的所有元素,然后在剩下的两个VC之间插入VC 4。然后你可以popViewController(animated: true)转到VC 4。

if let navigationController {
    let vc4 = ... 
    navigationController.viewControllers.removeSubrange(1..<navigationController.viewControllers.count - 1)
    navigationController.viewControllers.insert(vc4, at: 1)
    navigationController.popViewController(animated: true)
}

相关问题