我正在尝试与Web服务进行通信并检索数据,同时这样做,我尝试使用UIProgressView进行进度指示,以便用户知道发生了什么,但是,当我运行时,我看不到UIProgressView的进展。 这是我的相关代码:
- (void)viewDidLoad {
[super viewDidLoad];
//start request
NSURL *url=[NSURL URLWithString:@"http://iphone01.mtdgroup/admin_V01/stationsProcessing/pickers_management.php"];
ASIFormDataRequest *request=[ASIFormDataRequest requestWithURL:url];
[request setDelegate:self];
[request setUploadProgressDelegate:loadingProgress];
[request startAsynchronous];
NSLog(@"value: %f",[loadingProgress progress]);
}
日志显示:value: 0.000000
。
根据ASIHTTPRequest文档,将UIProgressView
设置为uploadProgressDelegate
的委托就足够了,ASIHTTPRequest将负责为我更新UIProgressView。
我错过了什么吗? thx for advance:)
答案 0 :(得分:4)
您正在执行异步请求,因此NSLog会在请求开始后立即执行,此时进度实际上为零 - startAsynchronous实际上在后台使用了NSOperationQueue,因此如果您需要编写自己的委托代码想要NSLog进展:
在视图控制器中包含类似的内容:
- (void)setProgress:(float)newProgress {
[loadingProgress setProgress:newProgress];
NSLog(@"value: %f",[loadingProgress progress]);
}
并设置:
[request setUploadProgressDelegate:self];
答案 1 :(得分:0)
确保您的课程符合ASIProgressDelegate
协议。
@interface YourClass : ... <ASIHTTPRequestDelegate,ASIProgressDelegate>