2016-04-21 58 views
0

我正在嘗試實現UIProgress視圖。每次在for循環中執行迭代結束時,我都會運行函數setProgress。進度設置是這樣的:UIProgressView setProgress

let progress: Float = Float(i + 1)/Float(list.count) 

與進步的功能如下:

progressView.setProgress(progress, animated: true) 

然而,不更新在每次循環的進度條。爲什麼是這樣?

+0

你能分享循環func嗎? –

+0

'因爲我在0 ... list.count - 1 {' – scribblelover27

回答

2

你應該用異步方法

dispatch_async(dispatch_get_main_queue()) { 
    progressView.setProgress(progress, animated: true) 
} 
+3

原因是? – enigma

+0

出於某種原因,蘋果決定將一些操作降級到僅在主線程中工作。其中很多是人機界面(視圖)導向,但有些則不是。 –

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