Как я могу ПРОСТО выполнить две задачи одновременно в приложении для iPhone?(Резьб?) - PullRequest
0 голосов
/ 02 февраля 2010

Ситуация:
Где-то в моем приложении я начинаю загружать данные со своего сервера. Перед началом загрузки я хотел бы обновить UILabel, чтобы сказать @ "Сейчас загружается ...". И установите его пустым после завершения загрузки.


Проблема:
Кажется, что загрузка занимает все внимание компьютеров, и UILabel никогда не обновляется до самого конца (когда загрузка уже закончена), и поэтому установите значение пустым (или никогда не будет отображаться в реальном времени).


Вопрос:
Как я могу ПРОСТО обновить свою UILabel, чтобы сказать «Сейчас загружается» прямо перед загрузкой?

Ответы [ 2 ]

3 голосов
/ 02 февраля 2010
label.text = @"Downloading";
NSOperationQueue *operationQueue = [[NSOperationQueue]alloc]init];
NSInvocationOperation *operation = [[NSInvocationOperation alloc]initWithTarget:self selector:@selector(download) object:@"http://www.google.com"];
[operationQueue addOperation:operation];
[operation release];


- (void)download:(NSString *)url
{
    // do the download
    [self performSelectorOnMainThread:@selector(didFinishDownload) withObject:nil waitUntilDone:NO];
}

- (void)didFinishDownload
{
   label.text = @"";
}
0 голосов
/ 02 февраля 2010

Если вы используете NSURLRequest -> NSURLConnection и методы делегата NSURLConnection, это будет выполнять загрузку в фоновом режиме и уведомлять делегата о входящих данных. Это также позволит вам отображать прогресс.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...