如果我这样呈现ViewController
:
let authViewController = authUI!.authViewController()
authViewController.modalPresentationStyle = .overCurrentContext
self.present(authViewController, animated: true, completion: nil)
我想知道ViewController
什么时候被解雇了。我尝试了以下操作:
let authViewController = authUI!.authViewController()
authViewController.modalPresentationStyle = .overCurrentContext
self.present(authViewController, animated: true, completion: {
print("View Dismissed")
})
,但这只让我知道视图是否被成功呈现。这个ViewController
不是我创建的,所以我不能更改viewWillDissapear
方法。
整个答案是基于OP没有访问authViewController
代码的假设
如果你不能访问authViewController
代码,糟糕的解决方案是使用视图控制器的viewWillAppear
来查找何时授权视图控制器被驳回。
基本上,当你在现有的视图控制器上呈现/推送任何视图控制器时,你的视图控制器的viewWillDisappear
将被调用,当呈现/推送的视图控制器被驳回或弹出时,viewWillAppear
将被调用。
因为viewWillAppear
也可能会因为其他原因被调用你不想把它和authViewController
混淆所以使用布尔值
private var shouldMonitorAuthViewControllerDismiss = false //declared a instance property
在实际显示authViewController
let authViewController = authUI!.authViewController()
authViewController.modalPresentationStyle = .overCurrentContext
self.present(authViewController, animated: true, completion: {
shouldMonitorAuthViewControllerDismiss = true
})
最后在你的viewWillAppear
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(true)
if shouldMonitorAuthViewControllerDismiss {
//auth view controller is dismissed
}
shouldMonitorAuthViewControllerDismiss = false
}