我正在尝试实现UIProgress视图。每次在for循环中执行迭代结束时,我都会运行函数setProgress。进度设置如下:
let progress: Float = Float(i + 1) / Float(list.count)
进度函数如下所示:
progressView.setProgress(progress, animated: true)
然而,每个循环都没有更新进度条。这是为什么?
答案 0 :(得分:2)
您应该使用异步方法
在主队列中执行此操作dispatch_async(dispatch_get_main_queue()) {
progressView.setProgress(progress, animated: true)
}
答案 1 :(得分:0)
您需要在后台线程中运行循环,并仅使用主线程来更新UI,以及您案例中progressView的进度。
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0) {
for i in 0...list.count - 1 {
// Do your work here
// ...
// ...
dispatch_async(dispatch_get_main_queue()) {
progressView.setProgress(progress, animated: true)
}
}
}