#iphone #ios4 #uibutton #uiimage
#iPhone #ios4 #uibutton #uiimage
Вопрос:
Я знаю, что этот вопрос задавали и отвечали на других форумах, но, похоже, я не могу повторить то, что они сделали, и заставить его работать. Я пытаюсь установить фон для кнопки, используя изображение, которое я загружаю с сервера. Все работает, пока я не попытаюсь создать объект NSData с содержимым URL. Когда я пытаюсь вывести данные на экран, они возвращаются нулевыми. Что я делаю не так?
myImageURLString = [[NSMutableString alloc] initWithString:@"http://destinationnexus.com"];
keyName = [businessButtonTagArray objectAtIndex:i];
arrayFromBusinessDictionary = [businessDictionary objectForKey:keyName];
stringToAddToMyImageURLString = [arrayFromBusinessDictionary objectAtIndex:1];
UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
[button addTarget:self action:@selector(buttonClicked:) forControlEvents:UIControlEventTouchUpInside];
[button setTag:i];
button.frame = CGRectMake(xOffSet (countForX*xMult), yOffset (countForY*yMult), 215, 155);
[myImageURLString appendString:stringToAddToMyImageURLString];
NSLog(@"Appended URL String: = %@", myImageURLString);
NSURL *myImageURL = [NSURL URLWithString:@"http://destinationnexus.com/pictures/directory/ColdWater-Inn-in-Tuscumbia-Alabama-35674-8729//.jpg"];
NSLog(@"NSURL = %@", myImageURL);
//THIS IS WHERE I SEEM TO HAVE A PROBLEM.....
NSData *imageData = [[NSData alloc] initWithContentsOfURL:myImageURL];
UIImage *image = [[UIImage alloc] initWithData:imageData] ;
NSLog(@"Image Data = %@", imageData);
//UIImage *myImage = [UIImage imageWithData:imageData] ;
[button setBackgroundImage:image forState:UIControlStateNormal];
Когда я запускаю программу, это то, что она выводит в журнале:
Добавленная строка URL: = http://destinationnexus.com/pictures/directory/Auburn-University-Hotel-and-Center-in-Auburn-Alabama-36830-5429.jpg
NSURL = http://destinationnexus.com/pictures/directory/ColdWater-Inn-in-Tuscumbia-Alabama-35674-8729.jpg
Данные изображения = (null)
Комментарии:
1. NSLog(@»NSURL = %@», myImageURL); какой результат?
2. @URLArenzo это меняется, потому что он динамически устанавливает фон для нескольких разных кнопок, но примером может быть: NSURL = destinationnexus.com/pictures/directory /…
3. О, вы когда-нибудь пытались загрузить изображение из NSURL выше? Проверьте URL.
4. Я. Если вы возьмете адрес и откроете его в браузере, он получит изображение. Я не думаю, что это проблема… Я попробую пару разных изображений, чтобы посмотреть, может быть, это сервер
5. Попробуйте сами. Скопируйте адрес NSURL в браузере, и вы увидите, что изображения нет.
Ответ №1:
Вы должны исправить свой myImageURL, удалив 2 косых черты в конце URL.
Код выглядит примерно так.
NSURL *myImageURL = [NSURL URLWithString:@"http://destinationnexus.com/pictures/directory/ColdWater-Inn-in-Tuscumbia-Alabama-35674-8729.jpg"];
NSData *imageData = [[NSData alloc] initWithContentsOfURL:myImageURL];
UIImage *image = [[UIImage alloc] initWithData:imageData] ;
[button setBackgroundImage:image forState:UIControlStateNormal];
[image release];
[imageData release];