呈现UIAlert

时间:2018-11-06 05:53:43

标签: swift delay loading uialertcontroller

我在发出警报时遇到问题。我正在使用UIAlertController。当用户按下“提交”按钮时,需要在应用程序执行某些操作时立即显示“请稍等...”的警报。操作完成后,警报将消失。即使在本人甚至开始进行操作之前就应该发出警报,我在发出警报之前还有很长的延迟(几秒钟)。我尝试了分派异步并尝试使用闭包,但是什么也没起作用。.在发出警报之前,仍然有几秒钟的延迟。 我该如何做,以便在按下按钮后立即显示警报?

override func viewDidLoad() {

    super.viewDidLoad()

    submitButton.addTarget(self,action:#selector(buttonAction),for:.touchUpInside)

}



@objc func buttonAction(){ 

    waiting()

    doOperations()

}

func waiting(){
    DispatchQueue.main.async{
    let alert = UIAlertController(title: nil, message: "Please wait...", preferredStyle: .alert)

    let loadingIndicator = UIActivityIndicatorView(frame: CGRect(x: 10, y: 5, width: 50, height: 50))
    loadingIndicator.hidesWhenStopped = true
    loadingIndicator.activityIndicatorViewStyle = UIActivityIndicatorViewStyle.gray
    loadingIndicator.startAnimating()

    alert.view.addSubview(loadingIndicator)

    self.present(alert, animated: false, completion: nil)
    }

}


func doOperations(){
    ...
}

func dismissWaiting{
    ...
    //dismiss alert 
}

2 个答案:

答案 0 :(得分:0)

只需将警报发送到主线程即可。

答案 1 :(得分:0)

嘿,我只是通过在警报提示完成后将呼叫打到doOperations来解决问题。像这样:

self.present(alert, animated: false, completion: {self.doOperations()})

现在,按下按钮后立即显示警报,一切正常。谢谢大家的所有建议。