2016-04-14 13 views
1

NSURLSessionTaskを使用して2つのイメージ(一度に1つずつ)をアップロードしようとしています。複数のファイルアップロードのための1つの進捗バー

- (void)URLSession:(NSURLSession *)session 
       task:(NSURLSessionTask *)task 
    didSendBodyData:(int64_t)bytesSent 
    totalBytesSent:(int64_t)totalBytesSent 
totalBytesExpectedToSend:(int64_t)totalBytesExpectedToSend 
{ 
if (self.imageName1 != nil && self.imageName2 != nil) 
    { 
     float progress = (float)totalBytesSent/(float)totalBytesExpectedToSend; 
     if (progress != 1.00) 
     { 
      // Calculate total bytes to be uploaded or the split the progress bar in 2 halves 
     } 
    } 
    else if (self.imageName1 != nil && self.imageName2 == nil) 
    { 
     float progress = (float)totalBytesSent/(float)totalBytesExpectedToSend; 
     if (progress != 1.00) 
     [self.progressBar1 setProgress:progress animated:YES]; 
    } 
    else if (self.imageName2 != nil && self.imageName1 == nil) 
    { 
     float progress = (float)totalBytesSent/(float)totalBytesExpectedToSend; 
     if (progress != 1.00) 
     [self.progressBar2 setProgress:progress animated:YES]; 
    } 
} 

2つの画像のアップロードの場合、進行状況を1つのプログレスバーで表示するにはどうすればよいですか?

答えて

1

NSProgressを使用すると、子NSProgressの更新を1つにまとめることができます。

  1. だから、親NSProgressを定義します。

    @property (nonatomic, strong) NSProgress *parentProgress; 
    
  2. NSProgressを作成し、それを観察するためにNSProgressViewを伝える:NSProgressがあるとき、

    self.parentProgress = [NSProgress progressWithTotalUnitCount:2]; 
    self.parentProgressView.observedProgress = self.parentProgress; 
    

    NSProgressViewobservedProgressを使用することにより更新、対応するNSProgressViewも自動的に更新されます。

    self.child1Progress = [NSProgress progressWithTotalUnitCount:totalBytes1 parent:self.parentProgress pendingUnitCount:1]; 
    

    とその後

    self.child2Progress = [NSProgress progressWithTotalUnitCount:totalBytes2 parent:self.parentProgress pendingUnitCount:1]; 
    
  3. 、個々のネットワーク要求が進むにつれて、更新:

  4. その後、個々の要求のために、更新される個々の子NSProgressエントリ、例えばを作成ここまでの合計バイト数はNSProgressです。

    self.child1Progress.completedUnitCount = countBytesThusFar1; 
    

個々の児童のcompletedUnitCountの更新NSProgressオブジェクトが自動的にそれに応じて進捗ビューを更新します、あなたはそれを観察しているので、親NSProgressオブジェクトのfractionCompletedを更新します。

親のtotalUnitCountが子のpendingUnitCountの合計と等しくなるようにしてください。

関連する問題