当我关闭一个视图时,它拒绝触发完成功能,我不知道为什么。
这里我希望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
但我没有运气。
答案 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
块中编写代码,它将会执行。