2013-05-14 4 views
2

У меня есть массив UIImages, который я создал, как этокак добавить UIImage из NSMutableArray изображений в UIButton используя setImage

UIImage *tButtonImage = [UIImage imageNamed:@"button-measurement.png"]; 
UIImage *tPButtonImage = [UIImage imageNamed:@"button-parts.png"]; 
UIImage *oPButtonImage = [UIImage imageNamed:@"button-onboard.png"]; 
UIImage *dButtonImage = [UIImage imageNamed:@"button-opening.png"]; 

// затем в зависимости от соответствующих значений через NSDicitonary/KeyValue пар будет решить, какие UIImages будут введены в мой массив как так

NSMutableArray *arrayOfButtonImages = [[NSMutableArray alloc] init]; 

if ([hasInfoSetIDString isEqualToString:@"T"]) { 
    [arrayOfButtonImages addObject:tButtonImage]; 
} 
if ([hasTSetIDString isEqualToString:@"T"]) { 
    [arrayOfButtonImages addObject:tPButtonImage]; 
} 
if ([hasOSetIDString isEqualToString:@"T"]) { 
    [arrayOfButtonImages addObject:oPButtonImage]; 
} 
if ([hasDSetIDString isEqualToString:@"T"]) { 
    [arrayOfButtonImages addObject:dButtonImage]; 
} 

на данный момент в зависимости от значений в моем NSDictionary я мог бы иметь массив, который выглядит примерно так.

NSLog(@"%@", arrayOfButtonImages); 

(
    "<UIImage: 0x2001f4c0>", 
    "<UIImage: 0x1ed51c20>" 
) 

Затем я пытаюсь применить эти изображения к кнопкам, которые у меня есть, поэтому кнопки являются «динамическими» для каждого.

if (arrayOfButtonImages != nil) { 

      for (int i = 0; i < [arrayOfButtonImages count]; i++) { 
       if (i == 0) { 
        [jumpButton1P setImage:[arrayOfButtonImages objectAtIndex:i] forState:UIControlStateNormal]; 
       } 
       else if (i == 1) { 
        [jumpButton2P setImage:[arrayOfButtonImages objectAtIndex:i] forState:UIControlStateNormal]; 
       } 
       else if (i == 2) { 
        [jumpButton3P setImage:[arrayOfButtonImages objectAtIndex:i] forState:UIControlStateNormal]; 
       } 
       else if (i == 3) { 
        [jumpButton4P setImage:[arrayOfButtonImages objectAtIndex:i] forState:UIControlStateNormal]; 
       } 
       else if (i == 4) { 
        [jumpButton5P setImage:[arrayOfButtonImages objectAtIndex:i] forState:UIControlStateNormal]; 
       } 
      } 
} 

так после того, как все, что сказано и сделано, изображение не появляется на моем UIButton .. Я проверил, чтобы убедиться, что переменная UIButton связана с объектом UIButton в Interface Builder .. но все-таки что-то идет не так.

Я даже просто попытался простой

UIImage *btnImage1 = [UIImage imageNamed:@"diagram-P.png"]; 
[jumpButton1P setImage:btnImage1 forState:UIControlStateNormal]; 

и это dosnt даже работать.

надеюсь все это имеет смысл .. любая помощь будет принята с благодарностью.

+0

Так что я загружаю UIButtons в UISubView, что и вызывает у меня проблемы. Я пытаюсь выяснить, когда самое лучшее время для вызова изображений, чтобы заставить это работать. Если я назначаю базовое изображение UIButton в viewDidLoad, он отлично работает .. но уловка: мне нужно ждать информации моего NSDictionary, которая после загрузки mainview и, следовательно, вызывает проблемы. – HurkNburkS

ответ

2

Попробуйте установить BackgroundImage вместо:

[jumpButton1P setBackgroundImage:[UIImage imageNamed:@"diagram-P"] forState:UIControlStateNormal]; 
+0

bugger .. просто попробовал, и это тоже не работает ... больно. – HurkNburkS

+0

попробуйте оставить изображение пустым внутри конструктора интерфейса и просто установите backgroundImage, когда вам это нужно внутри кода –

+0

, что я делаю, если вы посмотрите на него внутри IB, вы не можете увидеть UIButton, если вы не выберете его с помощью мыши. – HurkNburkS

0

тест снова после установки типа кнопки = "Custom" в Interface Builder или вручную:

UIButton *btnOne = [UIButton buttonWithType:UIButtonTypeCustom]; 

А затем вызвать setImage или setBackgroundImage

Надеюсь, это поможет

+0

его набор для пользовательских внутри Interfacebuilder .. – HurkNburkS

0

Не звучать излишним, но h вы подтвердили, что объекты изображения действительно связаны с вашим проектом? Нажмите на свой проект в Навигаторе проектов, выберите цель своего приложения, нажмите вкладку «Сборка фаз» и разверните раздел «Ресурсы копирования Bundle Resources (x items)».

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

+0

yep эти изображения есть и работают. Я узнал, если я просто применил изображение к кнопке в viewdidload, он отлично работает. Я думаю, что это вопрос времени в текущем методе, который я делаю в ..эффективно я получаю NSDictionary, я использую, чтобы принимать мои решения после того, как загрузился основной UIView, затем я вызываю метод, в котором я передаю изображения правильным кнопкам, которые отображаются на подвью ... что-то в том, как я делаю это вызывает проблему – HurkNburkS

Смежные вопросы