2017-09-11 6 views
0

進捗状況を更新するコードを以下に書いていますが、ループを完了して100%完了すると画面に反映されます。何か間違っている?スウィフト3:UIProgressViewは進捗状況を更新しませんでした

@IBOutlet weak var progressView: UIProgressView! 

var totalCount = 100 
var count = 0 

for (_ in 0...100) { 
    DispatchQueue.main.async(execute: {() -> Void in 
     self.progressView.progress = Float(count)/Float(totalCount) 
    }) 

    print("%: \(Float(count)/Float(totalCount))") 

    count += 1 
} 

答えて

0

あなたのコードは何もしていないので、ほとんど時間内に実行されません。

効果的に100%に遅延を設定しないと、progressView更新が表示されません。

-1

確認してください:

class ViewController: UIViewController { 
    @IBOutlet weak var progressView: UIProgressView! 
    var progressBarTimer:Timer! 
    var totalCount = 100 
    var count = 0 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     self.progressBarTimer = Timer.scheduledTimer(timeInterval: 0.1, target: self, selector: #selector(self.updateProgressBar), userInfo: nil, repeats: true) 
    } 

    func updateProgressBar(){ 
     let progress = Float(count)/Float(totalCount) 
     self.progressView.progress = progress 
     print("%: \(progress)") 
     if progress == 1.0 { 
      progressBarTimer.invalidate() 
     } 
     count += 1 
    } 
}