我知道,UIAlertController是异步的。但我正在寻找一种“封锁”解决方案。阻止我的意思是,在用户点击按钮后应该执行以下代码。
我的“AlertBox”非常简单,它放在一个“全局帮助器”文件中,因为我使用了很多这些AlertBox:
func showAlertBoxWithOK(headline:String, message:String, OkButtonText:String, viewController:UIViewController) {
let alertController = UIAlertController(title: headline, message: message, preferredStyle:UIAlertControllerStyle.Alert)
alertController.addAction(UIAlertAction(title: OkButtonText, style: UIAlertActionStyle.Default)
{ action -> Void in
return
})
viewController.presentViewController(alertController, animated: true, completion: {
return
})
}
在视图中,我称之为:
println ("this is before the AlertBox")
showAlertBoxWithOK("Sample", "Hello World.", "OK", self)
println ("this is after the AlertBox")
代码到第1行并打印文本。 接下来,AlertBox出现了。 但是:现在,在用户确认警报之前,第3行会被执行。
有没有办法,在用户确认AlertBox之前停止代码处理?就像VisualBasic中一个非常简单的“MessageBox”,它阻止了UI和代码?或者它可以像C#中的await
那样完成吗?
我的问题是,这是一个极端的长代码,有很多AlertBox来显示......
修改
我们说这是我的代码:
var a = 0
a = a + 5
showAlertBox("5 reached" ...)
a = a + 10
a = a + 15
showAlertBox("30 reached" ...)
a = a + 20
a = a + 25
showAlertBox("75 reached" ...)
等等。我不希望,代码向前迈进,同时显示AlertBox。而且由于计算(简化为a = ...
所示),很难将所有代码划分为块。