首先,我确实尝试了其他类似的方法:
Removing viewcontrollers from navigation stack
它们也不起作用!
我在navigation.viewControllers
的UIViewController
堆栈中像这样:[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堆栈中有...