我有一个简单的目录应用程序,可让用户从管理网站下载产品数据。

当用户按下按钮启动下载时,将触发以下代码

- (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的更新)

10-07 19:54