我试图从completionpresent参数执行任务,以便仅在UIAlertController关闭后才执行所需的功能。但是,该函数是在警报中采取措施之前调用的。在执行操作之前,如何等待执行功能?

let alert = UIAlertController(title: "Wild Card Played", message: "Choose your suit", preferredStyle : .alert);
for suit in suits {
    alert.addAction(UIAlertAction(title: suit, style: .default, handler: crazyEightPlayed))
                  }
self.present(alert, animated: true, completion: cpuTurn) //Upon completion call the cpuTurn() function

最佳答案

当前的问题是在向用户显示警报时而不是在用户按下“确定”时调用了cpuTurn。正如您在documentation here中看到的那样,self.present方法中的完成函数是“在演示结束后[执行]。此块没有返回值且没有参数。您可以为此参数指定nil”。将为用户显示警报,并且第一个UIViewController会显示“我已经完成了警报的显示”,然后运行cpuTurn函数。

您需要将代码放入您似乎已经拥有的UIAlertAction的处理程序中。您应该将cpuTurn调用移至crazyEightPlayed函数(或至少从crazyEightPlayed调用cpuTurn)

关于ios - 停止任务,直到AlertController操作发生Swift,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38062001/

10-10 23:25