我在发出警报时遇到问题。我正在使用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
}
答案 0 :(得分:0)
只需将警报发送到主线程即可。
答案 1 :(得分:0)
嘿,我只是通过在警报提示完成后将呼叫打到doOperations
来解决问题。像这样:
self.present(alert, animated: false, completion: {self.doOperations()})
现在,按下按钮后立即显示警报,一切正常。谢谢大家的所有建议。