Как программно установить фон на UICustomButton?

#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];