在填充UIProgressView

时间:2017-06-12 07:11:26

标签: ios objective-c nsurlsession

我一直在使用 NSURLSession 下载文件并将它们存储在目录中,使用目标C和XCode 7.3一切正常。我使用 UIProgressView 来显示下载会话的进度。但是当我尝试将代码模块化并将 NSURLSessionDelegate 方法与 UIViewController 类分开时,我无法使用它。

问题说明

A类 UIViewController 类,它具有表视图和进度视图。

B类 NSObject 类,它有一个启动下载会话的方法(A类的实例作为参数传递给此类的方法)

C类:实现 NSURLSessionDelegate 方法的NSObject类,需要使用 SetProgress:填充A类中的progressView(无法执行)因此我无法将A类的实例传递给C类,只能创建一个不会有帮助的新实例。

当我将所有代码放在一个类中时,它就像魅力一样!我尝试使用协议,但仍然无法这样做。因此,对此相同的任何帮助将不胜感激。提前致谢。

编辑1:C类代码:

-(void) setDelegateForProgressView :(id) delegate {
self.docCatalogInstancePersist = delegate;
}
- (void)URLSession:(NSURLSession *)session downloadTask:(NSURLSessionDownloadTask *)downloadTask didWriteData:(int64_t)bytesWritten totalBytesWritten:(int64_t)totalBytesWritten totalBytesExpectedToWrite:(int64_t)totalBytesExpectedToWrite{
NSString *downloadInProgress = ENABLED;
self.docCatalogInstancePersist.progressView.hidden= NO;

[[NSUserDefaults standardUserDefaults] setObject:downloadInProgress forKey:@"downloadInProgress"];
[[NSUserDefaults standardUserDefaults] synchronize];
dispatch_async(dispatch_get_main_queue(), ^{
    [self.docCatalogInstancePersist.progressView setProgress:(double)totalBytesWritten/(double)totalBytesExpectedToWrite
                                             animated:YES];    });


}

0 个答案:

没有答案