Как сообщить контроллеру, что загрузка завершена? - PullRequest
0 голосов
/ 11 января 2012

У меня есть класс, который загружает изображение с NSURLConnection. Я новичок в ios, поэтому мне было интересно, как я могу "уведомить" мой ViewController о завершении загрузки? Какой «инструмент» я должен использовать?

Пояснение:

Я реализовал все обратные вызовы NsUrlConnection, моя проблема в том, как уведомить ViewController из моего подключения ConnectionDidFinishLoading, что загрузка завершена?

Ответы [ 4 ]

1 голос
/ 11 января 2012
0 голосов
/ 11 января 2012

Чтобы использовать NSURLConnection, вы должны реализовать делегат, у которого есть методы, которые будут вызываться, когда с соединением происходит что-то интересное. Таким образом вы получаете информацию о том, было ли установлено соединение, как вы получаете данные, а также как вы узнаете, что соединение установлено ( connectionDidFinishLoading ). Больше информации в http://developer.apple.com/library/ios/#documentation/Cocoa/Conceptual/URLLoadingSystem/Tasks/UsingNSURLConnection.html#//apple_ref/doc/uid/20001836-BAJEAIEE

Так что в основном код, который вы вставляете в connectionDidFinishLoading , должен отправить какое-то сообщение контроллеру представления, чтобы он обновил представление.

0 голосов
/ 11 января 2012

Вы должны просто использовать эти методы в классе, который запускает nsurl-соединение:

#pragma mark -
#pragma mark Download support (NSURLConnectionDelegate)

- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
{
    [self.activeDownload appendData:data];
}


- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error // Never called (deprecated method not used with IOS version >> 4.3 ???)
{
    // Clear the activeDownload property to allow later attempts
    self.activeDownload = nil;

    // Release the connection now that it's finished
    self.imageConnection = nil;
}

- (void)connectionDidFinishLoading:(NSURLConnection *)connection{
    UIImage *image = [[UIImage alloc] initWithData:self.activeDownload];

    self.activeDownload = nil;
    // Release the connection now that it's finished
    self.imageConnection = nil;
}

, где imageConnection - свойство типа NSURLConnection:

NSURLConnection *imageConnection

, а activeDownload -NSMutableData:

NSMutableData *activeDownload
0 голосов
/ 11 января 2012

Я использую AFNetworking, в котором вы используете блоки для обработки отклика соединения как на успех, так и на сбой.Он также имеет хорошую оболочку для извлечения изображений и загрузки затем в UIImageView.

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