Вопрос

Вот моя ситуация: я делаю синхронные HTTP -запросы для сбора данных, но перед рукой я хочу разместить представление загрузки в заголовок навигационной панели. После того, как запрос закончился, я хочу вернуть TitleView обратно в NIL.

[self showLoading];        //Create loading view and place in the titleView of the nav bar.
[self makeHTTPconnection]; //Creates the synchronous request
[self endLoading];         //returns the nav bar titleView back to nil.

Я знаю, что представление загрузки работает, потому что после того, как запрос пройден через представление загрузки.

Моя проблема: это должно быть очевидно на этом этапе, но в основном я хочу отложить[self makeHTTPconnection] функционируйте до [self showLoading] завершен.

Спасибо за время.

Это было полезно?

Решение

Вы не можете сделать это в синхронном подходе. Когда вы отправите самопостановка Сообщение, пользовательский интерфейс не будет обновлен до завершения всего метода, поэтому он уже выполнит две другие задачи (Makehttpconnection а также конечная загрузка) В результате вы никогда не увидите представление загрузки.

Возможное решение для этой ситуации будет работать одновременно:

[self showLoading];
NSOperationQueue *queue = [[[NSOperationQueue alloc] init] autorelease];
NSInvocationOperation *operation = [[NSInvocationOperation alloc] initWithTarget:self selector:@selector(_sendRequest) object:nil];
[queue addOperation:operation];
[operation release];

Затем вы должны добавить метод * _sendrequest *:

- (void)_sendRequest
{
    [self makeHTTPConnection];
    //[self endLoading];
    [self performSelectorOnMainThread:@selector(endLoading) withObject:nil waitUntilDone:YES];
}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top