解雇视图从不调用完成功能

时间:2018-04-22 17:58:42

标签: ios swift closures interface-builder

当我关闭一个视图时,它拒绝触发完成功能,我不知道为什么。

enter image description here

这里我希望print语句能够执行,但它永远不会执行。

@IBAction func tapBack(_ sender: Any) {
    self.navigationController?.popViewController(animated: true)
    self.dismiss(animated: true, completion: {
        print("this should print")
    })
}

源代码

https://github.com/omenking/DismissCompletion

我也尝试将其包裹在DispatchQueue.main.async但我没有运气。

2 个答案:

答案 0 :(得分:2)

你最好不要在水龙头上调用这个功能吗?例如:

func dismissController() {
  self.navigationController?.popViewController(animated: true)
  self.dismiss(animated: true, completion: nil)
}

然后按下按钮:

@IBAction func tapBack(_ sender: Any) {
  dismissController()
  print("this should print")
}

我刚下载了你的项目并尝试了这个并打印出来。

答案 1 :(得分:0)

首先,我假设你是diff,你必须popping the view controller

其次,如果你这样做了,那么pushed it into the navigation Stack方法永远不会被调用,因为你已经在它之前弹出了视图控制器。

如果您希望self.dismiss数据块生效,则应该completion而不是present the ViewController。然后,您可以在pushing块中编写代码,它将会执行。