我试图解散一个ViewController在一个IBAction调用遣散ViewController

  @IBAction func cancel(sender: AnyObject) {
    self.dismissViewControllerAnimated(false, completion: nil)
    println("cancel")
}

@IBAction func done(sender: AnyObject) {
    self.dismissViewControllerAnimated(false, completion: nil)
    println("done")
}

我可以在控制台输出中看到println消息,但ViewController从未被解散。有什么问题吗?


当前回答

Use:

self.dismiss(animated: true, completion: nil)

而不是:

self.navigationController.dismissViewControllerAnimated(true, completion: nil)

其他回答

将你想要解散的视图嵌入到一个NavigationController中 添加一个BarButton与“完成”作为标识符 使用选定的Done按钮调用助理编辑器 为这个按钮创建一个IBAction 将这一行添加到括号中: 自我。disdisviewcontrolleranimated (true, completion: nil)

如果你想解散你的视图控制器使用这个。这段代码是用按钮动作来编写的,以消除VC

  @IBAction func cancel(sender: AnyObject) {
   dismiss(animated: true, completion: nil)
  }

如果你正在以模态方式呈现一个ViewController,并且想要回到根ViewController,在你回到根ViewController之前,注意解散这个模态呈现的ViewController,否则这个ViewController将不会从内存中移除,并导致内存泄漏。

Use:

self.dismiss(animated: true, completion: nil)

而不是:

self.navigationController.dismissViewControllerAnimated(true, completion: nil)

如果你在父VC中使用当前方法,那么你应该调用这个函数,来解散子VC

self.dismiss(animated: true, completion: nil)

如果你用push方法调用子VC,用这个方法来解散子VC

self.navigationController?.popViewController(animated: true)