从导航控制器中删除除当前以外的所有ViewController

时间:2019-01-18 12:02:54

标签: ios swift

我正在用Swift编写IOS应用。

导航到VC后,我需要从导航控制器中删除除当前(屏幕上)之外的所有视图控制器。我正在使用下面的代码及其工作正常。但是,它看起来并不是优化的解决方案。任何更好的解决方案,例如语法糖,例如地图,过滤器等:

 if let nc = appDelegate().baseNavigationController{
   nc.viewControllers = Array(nc.viewControllers.dropLast(nc.viewControllers.count-1)
 }

3 个答案:

答案 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个视图控制器。