如何在表格单元格中显示进度?

时间:2016-04-01 14:00:47

标签: ios objective-c uitableview cell

我从服务器下载文件。当文件下载时,我想显示表格单元格中的百分比进度。我怎么能这样做?

下载文件代码

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *filePath = [documentsDirectory stringByAppendingPathComponent:@"01.mp3"];
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
BOOL fileExists = [[NSFileManager defaultManager] fileExistsAtPath:filePath isDirectory:NO];

if (!fileExists) {

    NSString *stringURL = @"https://drive.google.com/uc?export=download&id=0B6zMam2kAK39X0FOaUJXVDUwOHc";
    NSURL  *url = [NSURL URLWithString:stringURL];
    NSData *urlData = [NSData dataWithContentsOfURL:url];
    [urlData writeToFile:filePath atomically:YES];

}
});
self.audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL URLWithString:filePath] error:nil];
}

2 个答案:

答案 0 :(得分:0)

[NSData dataWithContentsOfUrl]无法做到这一点。您需要一个库,例如AFNetworking

请参阅How to get download progress in AFNetworking 2.0?

答案 1 :(得分:0)

创建自定义单元格XIB文件,在其上添加进度条

enter image description here

在视图控制器中开始下载,访问进度条并在 didReceiveData 方法中设置进度

我刚刚在视图控制器中创建,你需要将它与表视图方法一起使用

代码示例

var
  Pts: TArray<TPointDouble>;
  i: Integer;
begin
  Pts := CalcRingPoints(1, 2, 0.2, 0.5);
  for i := 0 to High(Pts) do
    Memo1.Lines.Add(Format('%d  r:%5.4f  x:%f y:%f',
      [i, Hypot(Pts[i].X, Pts[i].Y), Pts[i].X, Pts[i].Y]));   
   //37 points

结果看起来像

enter image description here