在我的 iPhone 应用程序中,我有一个按钮,单击按钮我调用 Web 服务并获取一些链接,之后我需要下载这些链接中的文件。单击按钮会弹出一个视图,单击“确定”按钮将替换为进度条,并显示下载进度。下载完成后,进度条将再次被按钮替换。我在这里遇到的问题是,如果互联网连接速度很慢,UI 将被阻止,并且“确定”按钮将保持按下模式,直到它完全从服务器获取详细信息,然后才会出现进度条。我想在单击 OK 按钮后立即显示进度条,它不应该锁定 UI。我使用了以下方法:
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,
(unsigned long)NULL), ^(void) {
[self download];
});
在这种情况下,UI 没有锁定,但是进度条没有出现。我用
[self performSelectorInBackground:@selector(download) withObject:nil];
在这种情况下,UI 没有阻止,但它会显示下载按钮,直到它从服务器获取详细信息。只有这样它才会显示进度条。
以及下载的代码流程:
- (void)download{
//Creating a custom progressview
myprogressView = [[CustomProgressView alloc]initWithFrame:CGRectMake(25, 138, 100, 28)];
[cell.contentView addSubview:myprogressView];
[cell bringSubviewToFront:myprogressView];
//Calling the methods for getting the details from the server
//after some internal process, start download
[self.myQueue go];
}
请分享你的想法