我有NavigationController
。在ThirdViewController
我正在執行一些任務,並在失敗時,我使用UIAlertController
顯示警報消息。當ViewController不在窗口層次結構中時不顯示警報
有時,當我啓動任務並返回到SecondViewController
時,出現SecondViewController
上顯示的錯誤消息,單擊確定後,導航欄中的所有內容都變黑。我剩下的只有導航欄,如果我再次返回到FirstViewController
,它除了導航欄外也具有相同的黑色視圖。
呈現不在窗口層次結構中的ViewController的警報會產生問題。如果我不在屏幕上,我不希望提示警報。
如果我慢慢地刷回ViewController,它很容易重現。
處理它的最好方法是什麼?
分享我的代碼,
按鈕動作ThirdViewController
func buttonTapped() {
APIManager.sharedManager.getDetails(completion: { (details ,error) -> Void in
guard error == nil else {
Alert.errorMsg(error!.localizedDescription, viewController: self, goBack: false)
return
}
print(details)
}
}
class Alert: NSObject {
/* Error message */
class func errorMsg(message: String, viewController: UIViewController?, goBack: Bool = false) {
let alertView = UIAlertController(title: "Error", message: message, preferredStyle: .Alert)
let action = UIAlertAction(title: "OK", style: UIAlertActionStyle.Default) { (alert: UIAlertAction) -> Void in
if goBack == true && viewController != nil {
viewController!.navigationController?.popToRootViewControllerAnimated(true)
}
}
alertView.addAction(action)
let controller = viewController ?? UIApplication.sharedApplication().keyWindow?.rootViewController
controller!.presentViewController(alertView, animated: true, completion: nil)
}
}
發佈您的代碼以獲取更多想法 – Lion