gpt4 book ai didi

Swift:UIAlertController 未出现在dispatch_async 中

转载 作者:行者123 更新时间:2023-11-30 10:02:31 25 4
gpt4 key购买 nike

我有一个设置,我使用 UIAlertController 来显示任务的进度,直到任务返回某些状态为止。

代码如下所示

class AlertVCDemo: UIViewController {
let alertVC = UIAlertController(title: "Search",
message: "Searching....", preferredStyle:
UIAlertControllerStyle.Alert)

override func viewDidLoad() {
super.viewDidLoad()
alertVC.addAction(UIAlertAction(title: "Ok", style: .Default, handler: { action in
switch action.style{
case .Default:
print("default")

case .Cancel:
print("cancel")

case .Destructive:
print("destructive")
}
}))
}

func showAlertVC() {
dispatch_async(dispatch_get_main_queue(), {
self.presentViewController(self.alertVC, animated: true, completion: nil)
})
}

@IBAction func searchButtonClicked(sender: AnyObject) {
showAlertVC()
// Now do the real search that will take a while,
// depending on the result change the message of the alert VC
}
}

不知何故,我发现警报 View Controller 未显示在主线程中。搜索逻辑最终完成。我使用的是 iOS 9.3。在提出这个问题之前,我做了彻底的研究,并且类似线程上建议的解决方案都没有帮助。不知道为什么当搜索仍在进行时,dispatch_async 不显示警报 VC。

即使我的dispatch_async不在方法中,事情也不会改变。

最佳答案

@IBAction func searchButtonClicked(sender: AnyObject) {
showAlertVC()
// Now do the real search that will take a while,
// depending on the result change the message of the alert VC
}

在主线程中调用。所以我猜你的“搜索代码”正在阻塞 UI 线程。尝试这样的事情

@IBAction func searchButtonClicked(sender: AnyObject) {
showAlertVC()
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0)) {
// put your search code here
}
}

关于Swift:UIAlertController 未出现在dispatch_async 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37651542/

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