从导航堆栈中删除UIViewControllers数组无法正常工作

问题描述 投票:0回答:1

首先,我确实尝试了其他类似的方法:

Removing viewcontrollers from navigation stack

它们也不起作用!

我在navigation.viewControllersUIViewController堆栈中像这样:[Root,V1,V2,V1,V2,LastViewController]

我有方法,该怎么做,它从给定的types的堆栈中删除所有viewControllers:

extension UINavigationController {
    func removeControllersFromStack(ofTypes types: [UIViewController.Type]) {
        for type in types {
            self.viewControllers.removeAll { $0.isKind(of: type) }
        }
    }
}

我从[[LastViewController在堆栈中的viewDidLoad()中调用此方法,如下所示:

navigationController!.removeControllersFromStack(ofTypes: [V1.self, V2.self])

并且的确删除了所有V2类型的viewControllers并调用了它们的deinit,但没有触摸V1类型的viewControllers,却没有调用它们的deinit。>

如果我按顺序navigationController!.removeControllersFromStack(ofTypes: [V2.self, V1.self])更改类型,反之亦然,V2未被触摸。

有人可以解释我在做什么错!谢谢。

首先,我确实尝试了另一个类似的方法:从导航堆栈中删除视图控制器,它们也不起作用!我的navigation.viewControllers堆栈中有...

ios swift uinavigationcontroller
1个回答
0
投票
如果要删除所有导航控制器,请使用此代码
© www.soinside.com 2019 - 2024. All rights reserved.