弹回到之前的ViewController不处理警报错误消息

时间:2018-02-15 07:38:36

标签: ios swift uialertview

当用户未正确输入所有详细信息时,我会弹出警报。我想让它在用户解除警报时回弹到之前的ViewController。

它看起来像这样

func errorAlert (errorMessage: String?) {
    let alert = UIAlertController (title: "Error message", message: errorMessage, preferredStyle: .alert)
    alert.addAction(UIAlertAction(title: "OK", style: .cancel, handler: nil))
    self.present(alert, animated: true, completion: nil)
    popThisView()
    SVProgressHUD.dismiss()
}

func popThisView() {
    self.dismiss(animated: false, completion: nil)
    self.navigationController!.popToRootViewController(animated: true)
}

但是XCode给了我这个错误:

  

popToViewController:transition:call on   现有的过渡或演示正在发生;该   导航堆栈不会更新。

2 个答案:

答案 0 :(得分:2)

这样做,

let alert = UIAlertController (title: "Error message", message: errorMessage, preferredStyle: .alert)
alert.addAction(UIAlertAction(title: "OK", style: .cancel, handler:{ (alertOKAction) in
                self.popThisView()
            }))
self.present(alert, animated: true, completion: nil)
SVProgressHUD.dismiss()

答案 1 :(得分:0)

UIAlertAction对象有一个动作处理程序,因此您可以在该处理程序中处理动作:

let action =  UIAlertAction(title: "OK", style: . cancel, handler: {(alert: UIAlertAction!) in
            DispatchQueue.main.async( execute: {
                self.popThisView()
            })
        })