无法在调度队列swift 3内的主线程中更新UI

时间:2017-09-07 13:11:02

标签: ios swift progress-bar alamofire

我正在使用Alamofire和SVProgressHUD来查询API并处理数据。 问题是在dispatchqueue内部,即使我更新主线程中的UI,更新的结果也将在调度队列完成后发生。  我想要做的是在进度条上显示进度状态,并在循环中不断更新进度状态(浮点)。但是,在发送队列中的所有内容完成之前,这不会出现。我的代码如下所示。 干杯

DispatchQueue.global(qos: .userInitiated).async(execute: {
        Alamofire.request(queryURL).responseJSON() { response in
    //Do something
    for i in 0..<100{
        //Do lots of things
        DispatchQueue.main.async {
            SVProgressHUD.showProgress(Float(i/100), status: "Loading...")
        }
    }
 //Dismiss
})

2 个答案:

答案 0 :(得分:1)

尝试以下代码: -

String regex = "(\\s)(\\*[^*]+\\*)(\\s)";

它会显示为......

0.0 0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99

答案 1 :(得分:1)

有两种类型的线程。您可以在此底部链接中找到更多信息。 Ui仅适用于并发

Click here on link to know more

Apple不允许更改线程中的ui控件。所以你必须在线程外更新ui。