我正在用Swift编写IOS应用。
导航到VC后,我需要从导航控制器中删除除当前(屏幕上)之外的所有视图控制器。我正在使用下面的代码及其工作正常。但是,它看起来并不是优化的解决方案。任何更好的解决方案,例如语法糖,例如地图,过滤器等:
if let nc = appDelegate().baseNavigationController{
nc.viewControllers = Array(nc.viewControllers.dropLast(nc.viewControllers.count-1)
}
答案 0 :(得分:3)
除了删除外,您还可以使用所有内容:
self.navigationController?.viewControllers = [self]
答案 1 :(得分:1)
在视图控制器的viewDidLoad
中,将导航控制器的viewControllers
属性设置为所需的值,如下所示:
override func viewDidLoad() {
super.viewDidLoad()
self.navigationController?.viewControllers = [self]
}
答案 2 :(得分:0)
您还可以通过获取您拥有的视图控制器的数量并将其全部删除(最后一个除外)来删除它
if let viewControllerCount = self.navigationController?.viewControllers.count {
self.navigationController?.viewControllers.removeFirst(viewControllerCount - 1)
}
如果您有5个视图控制器,则可以调用removeFirst(5-1),以便它可以删除前4个视图控制器。