我有一个简单的目录应用程序,可让用户从管理网站下载产品数据。
当用户按下按钮启动下载时,将触发以下代码
- (IBAction)downloadProducts:(id)sender {
outputText.text = @"Downloading data, please wait...";
[Product loadData:outputText];
outputText.text = @"Ok, download complete.";
}
outputText是一个UITextView,应该让用户知道发生了什么。
Product类中有一个静态方法来处理下载。一切正常,唯一的问题是uitextview的输出会阻塞,直到下载完成。
即。直到[Product loadData:outputText]之后才显示“正在下载数据,请稍候...”消息;完成并立即用下载完成消息覆盖...
任何帮助表示赞赏,
谢谢
吉姆
最佳答案
是的,在您的下载请求期间,UI的更新将被阻止。您可能需要等待,然后才能调用[Product loadData:outputText],可以使用以下方法完成此操作
[self performSelector:@selector(someMethod:) withObject:nil afterDelay:1.0];
并把
[Product loadData:outputText];
outputText.text = @"Ok, download complete.";
用那种方法。
或者,为获得最佳实践,请从其他线程或使用块开始下载。这使您可以在下载期间继续更新UI(请注意,仅应在主线程/队列中完成UI的更新)