2017-01-17 14 views
0

私は2つのコントローラを持っています。最初は進捗バーがあり、データとループを取得するというリクエストがあります。ループ中に最初のコントローラにあるバーを更新する必要があります。問題は、ループを更新しなくても、メソッドの実行が終了したときにのみスラッシュが更新されることです。ループ中の進行状況バーの更新

FirstView:

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0)) { 
    for i in 0 ..< JSON.count { 

     autoreleasepool{ 
      count = count + 1 
      if count >= percentage { 
       progress = progress + 1 
       //This notification executes the method that makes the update in the first view 
       NSNotificationCenter.defaultCenter().postNotificationName("ProgressNotification", object: nil, userInfo: ["label":"Clientes", "progress" : progress]) 
       count = 0 
      } 
     } 

    } 
} 

SecondView:ツールバー

func addProgress(notification:NSNotification){ 
    dispatch_async(dispatch_get_main_queue()) { 
     self.progressBar.setProgress(CGFloat.init(notification.userInfo!["progress"] as! Int), animated: true) 
     self.progressLabel.text = notification.userInfo!["label"] as? String 
    } 
} 

答えて

0

を更新します

//メソッド私はあなたの定数スレッドの切り替えと通知の上に迂回わからないですサービス。ただし、進捗状況を0.0から1.0の間の浮動小数点数に設定することになっています。 あなたがしているのは、1からJSON.countまでのint型の値をfloat型にキャストすることです。したがって、進行状況は常に1.0以上です。

.setProgress(CGFloat.init(JSON.count)/CGFloat.init(i))のようなものを使用すると便利です。

intをfloatにキャストし、divisioが整数除算ではないfloat除算であることを確認してください。 (整数部は0または1以上と評価されますが、その間に注意してください)

関連する問題