[英]How to check if a view controller has been dismissed in Swift
如果我像這樣呈現一個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
代碼,糟糕的解決方案是使用您的視圖 controller 的viewWillAppear
來查找何時關閉身份驗證視圖 controller。
基本上,當您在現有視圖 controller 上呈現/推送任何視圖控制器時,當呈現/推送視圖 controller 被解除或彈出viewWillAppear
時,您的視圖控制器的viewWillDisappear
將被類似地調用。
因為viewWillAppear
也可能因為其他原因而被調用,並且您不想將其混淆為authViewController
關閉,請使用 boolean
private var shouldMonitorAuthViewControllerDismiss = false //declared a instance property
當您實際呈現authViewController
時,將 boolean 設置為 true
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
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.