我试图从completion
的present
参数执行任务,以便仅在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/