Как скачать изображение?

Используйте этот код для загрузки изображения. Но изображение не отображается на дисплее.

NSURL *url = [NSURL URLWithString: @"http://upload.wikimedia.org/wikipedia/commons/7/7f/Williams_River-27527.jpg"]; NSURLSessionDownloadTask *downloadPhotoTask = [[NSURLSession sharedSession] downloadTaskWithURL:url completionHandler:^(NSURL *location, NSURLResponse *response, NSError *error) { _downloadedImage = [UIImage imageWithData: [NSData dataWithContentsOfURL:location]]; }]; // 4 [downloadPhotoTask resume]; _downloadedImage = [UIImage imageNamed:@"Williams_River-27527.jpg"]; [_book3 setBackgroundImage: _downloadedImage forState:UIControlStateNormal]; [_scroller addSubview:_book3]; 

UPD

Я обновляю свой код в моем проекте xcode, но он тоже не работает … Почему он не работает в моем проекте Xcode?

 #import "ViewController.h" @interface ViewController () <NSURLSessionDelegate, NSURLSessionDownloadDelegate> @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; NSURLSessionConfiguration *sessionConfiguration = [NSURLSessionConfiguration defaultSessionConfiguration]; NSURLSession *session = [NSURLSession sessionWithConfiguration:sessionConfiguration delegate:self delegateQueue:nil]; NSURLSessionDownloadTask *downloadTask = [session downloadTaskWithURL:[NSURL URLWithString:@"http://cdn.tutsplus.com/mobile/uploads/2013/12/sample.jpg"]]; [downloadTask resume]; } - (void)URLSession:(NSURLSession *)session downloadTask:(NSURLSessionDownloadTask *)downloadTask didFinishDownloadingToURL:(NSURL *)location { NSData *data = [NSData dataWithContentsOfURL:location]; dispatch_async(dispatch_get_main_queue(), ^{ [self.progressView setHidden:YES]; [self.imageView setImage:[UIImage imageWithData:data]]; }); } - (void)URLSession:(NSURLSession *)session downloadTask:(NSURLSessionDownloadTask *)downloadTask didResumeAtOffset:(int64_t)fileOffset expectedTotalBytes:(int64_t)expectedTotalBytes { } - (void)URLSession:(NSURLSession *)session downloadTask:(NSURLSessionDownloadTask *)downloadTask didWriteData:(int64_t)bytesWritten totalBytesWritten:(int64_t)totalBytesWritten totalBytesExpectedToWrite:(int64_t)totalBytesExpectedToWrite { float progress = (double)totalBytesWritten / (double)totalBytesExpectedToWrite; dispatch_async(dispatch_get_main_queue(), ^{ [self.progressView setProgress:progress]; }); } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated. } 

Почему этот код не работает в моем проекте Xcode?

Если вы хотите, чтобы это работало в качестве подставки кода (не уверен, что это произойдет), вам необходимо выполнить шаги в этом процессе:

 //1 NSURL *url = [NSURL URLWithString: @"http://upload.wikimedia.org/wikipedia/commons/7/7f/Williams_River-27527.jpg"]; // 2 NSURLSessionDownloadTask *downloadPhotoTask = [[NSURLSession sharedSession] downloadTaskWithURL:url completionHandler:^(NSURL *location, NSURLResponse *response, NSError *error) { // 3 _downloadedImage = [UIImage imageWithData: [NSData dataWithContentsOfURL:location]]; //5 dispatch_async(dispatch_get_main_queue(), ^{ [_book3 setBackgroundImage: _downloadedImage forState:UIControlStateNormal]; [_scroller addSubview:_book3]; }); }]; // 4 [downloadPhotoTask resume]; 

Вы создаете первый экземпляр изображения, загружая его из своего пакета: _downloadedImage = [UIImage imageNamed:@"Williams_River-27527.jpg"]; (надеюсь, есть один)

После загрузки изображения с вашего URL-адреса вы создаете второй экземпляр изображения с загруженным контентом. Но ваша кнопка по-прежнему связана с первым экземпляром (сильная ссылка). Кнопка просто не знает нового изображения.

Поэтому, если вы хотите изменить отображаемое изображение, вы должны установить его снова сразу после назначения его _downloadedImage: [_book3 setBackgroundImage: _downloadedImage forState:UIControlStateNormal];

Возможно, вам нужно обновить ui после этого.

  • Прозрачный фон ModalViewController
  • Выбрасывание исключения из любого места в проекте
  • Нет видимого @interface для 'UINavigationBar' объявляет селектор 'titleTextAttributes:'
  • Некоторые вопросы о UIScrollView
  • iOS - обработка переадресаций в UIWebView
  • Отладчик Xcode 6.2 отсоединяется от устройства при сбое приложения
  • UIBarButtonItem не появляется
  • initWithNibName: @ "-VS- self.storyboard instantiateViewControllerWithIdentifier: @"?
  • Штыри исчезли при использовании делегата MKAnnotationView
  • Как показать новую строку с форматом чисел от ответа сервера String в iOS
  • Пунктирные линии с CGContextStrokePath
  • Interesting Posts

    iOS CoreText: CTFrameSetter делает более широкие линии, чем CGPath позволяет

    Как получить уведомление, что пользователь поделился чем-то с помощью ShareKit?

    Необходимо извлечь XML-документ из объекта NSMutableData в iOS

    ReactiveCocoa- Ошибка в методе карты

    изменить высоту uitableviewheader

    ContainerView на TabController создает вкладку Phantom

    как установить начальное смещение UIWebView

    Как узнать, запущено ли приложение из схемы URL или обычного запуска?

    В Swift, почему .zero заполняет все окно в этом примере?

    Получение разного результата с одинаковым числом

    Сафари ios обычно не выполняют первый HTTP-запрос после пробуждения

    WKWebView переход новой страницы

    Существует ли ограничение на количество соединений сокетов, которые можно открыть в iOS?

    Как ссылаться на класс, который следует за протоколом в возвращаемом типе функции?

    Используйте различные Assets.xcassets с разными целями в приложении iOS?

    Давайте будем гением компьютера.