关于在每个表格单元格中显示UIProgressView的问题

时间:2010-11-30 10:13:28

标签: iphone objective-c

我正在尝试将一些文件上传到服务器。这些文件列在UItableview上。我的问题是:

如何在每个表格单元格中显示UIProgressView并显示每个上传文件的进度。

我当前的代码能够在每个单元格中显示UIProgressView,但是当我尝试上传时,进度条没有移动。该程序假设一次上传1个文件,在第一个文件完成后,第二个文件将开始上传。作为响应,当第一个文件完成时,第一个文件的进度条将停止,并且secong文件的进度条将开始移动。希望这很清楚。我真的需要一些帮助,我无法在网上找到它。谢谢你提前。谢谢

2 个答案:

答案 0 :(得分:0)

您必须维护数组中每个单元格的进度值。

我想你必须在cellForRowAtIndexPath方法中设置UIProgressView对象的进度值,所以每当你从网络代码回调时,你需要调用[self.tableView reloadData],网络代码将文件上传到具有当前上传大小的服务器。

答案 1 :(得分:0)

可能的解决方案(可以优化):(抱歉格式化,无法使其正常工作)

  • 为tableView

  • 中的每个单元格创建UIProgressView
  • 在视图控制器中创建一个字段,您将在其中存储已上传的字节数(bytesAlreadyUploaded) - 您应该从上传者那里重复接收此类信息。

  • 创建一个字段,您可以在其中存储当前上传的上传字节数(bytesToUpload)

  • 创建一个字段,您可以在其中指定当前使用的进度视图的指针(progressViewCurrentlyUsed)

  • 创建一个用于刷新进度的方法:
  
      
  • (void)refreshProgress {         progressViewCurrentlyUsed.progress =   bytesAlreadyUploaded /   (CGFloat的)bytesToUpload;
      }
  •   
  • 创建一个NSTimer,它将每秒调用此refreshProgress方法几次:
  

refreshTimer = [NSTimer   timerWithTimeInterval:0.1 target:self   选择器:@selector(refreshProgress)   userInfo:nil重复:是];
    [[NSRunLoop mainRunLoop]   addTimer:refreshTimer   forMode:NSDefaultRunLoopMode];

  • 更改正在上传的文件时,请更改progressViewCurrentlyUsed,bytesToUpload和zero bytesAlreadyUploaded