gpt4 book ai didi

ios - 调用 UIAlertController 并等待用户交互

转载 作者:行者123 更新时间:2023-11-28 07:00:23 25 4
gpt4 key购买 nike

我知道,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
})
}

在 View 中,我这样调用它:

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 那样完成?

我的问题是,一段很长的代码要显示很多 AlertBoxes...

编辑

假设这是我的代码:

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 = ... 进行说明以进行简化),很难将所有代码分成 block 。

最佳答案

与其将所有代码都放在同一个方法中,不如将您希望在用户交互后执行的代码放入另一个方法中。然后,当按下 OK 按钮时调用该方法。

例如:

func showAlertBoxWithOK(headline:String, message:String, OkButtonText:String, viewController:UIViewController) {

a += 5

let alertController = UIAlertController(title: headline, message: message, preferredStyle:UIAlertControllerStyle.Alert)

alertController.addAction(UIAlertAction(title: OkButtonText, style: UIAlertActionStyle.Default)
{ action -> Void in
self.showNextAlertBox("headline2", message: "message2", OkButtonText: "OK", viewController: self)
return
})
viewController.presentViewController(alertController, animated: true, completion: {
return
})
}

func showNextAlertBox(headline:String, message:String, OkButtonText:String, viewController:UIViewController) {

a += 10
a += 15

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
})
}

关于ios - 调用 UIAlertController 并等待用户交互,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32190390/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com