2012-01-11 2 views
0

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

Разъяснение:

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

ответ

0

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

0

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

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

+0

Я не был достаточно конкретным. Я реализовал connectionDidFinishLoading и попытался NSnotificayion отправить уведомление контроллеру, но отправленный из ConnectionDidFinishLoading не получил в контроллере, возможно, из-за того, что он работает в другом потоке? Что еще я могу использовать? – user691285

+0

Вы используете потоки только для загрузки? Было бы проще использовать асинхронный API. таким образом вы можете отправить сообщение с помощью обычного вызова метода, например '[controller imageDownloaded]'. – Joni

0

вы должны просто использовать эти методы в классе, запускающих 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