Ничто не кажется мне таким странным в вашем коде, но есть пара небольших вещей, которые я бы проверил ...
Ваш вызов [UIImage imageNamed:]
должен принимать строку в качестве параметра, но он появляется (по крайней мере, по имени вашего массива), который вы передаете в объект UIImage. Код должен быть одним из следующих:
UIImage *img = [UIImage imageNamed:[arrayAnswerImageNames objectAtIndex:index]]; // Note "Names" array
или
UIImage *img = (UIImage *)[arrayAnswerImages objectAtIndex:index];
в зависимости от того, как вы хотите построить свой массив изображений; с изображениями, или imageNames. Также я предполагаю, что рамки ваших кнопок установлены, и что они добавляются в вид?
Надеюсь, вы все разберетесь.
EDIT
Только что посмотрел ваш дополнительный код. Просто мысль - вы инициализировали свой массив arrayQuestionImages
? Убедитесь, что вы называете что-то похожее на:
self.arrayQuestionImages = [NSMutableArray arrayWithCapacity:10];
до добавления объектов.
Кроме того, использование оператора switch, как показано выше, выглядит немного запутанным. Лично я бы сделал что-то вроде следующего:
- (void)viewDidLoad
{
[super viewDidLoad];
self.questionImageNames = [NSArray arrayWithObjects:@"bear.jpg", @"girraf.jpg", @"hippo.jpg", @"monkey.jpg", @"piglet.jpg", @"pumba.jpg", @"rabbit.jpg", @"simba.jpg", @"snake.jpg", @"tigger.jpg", @"turtle.jpg", nil];
NSMutableArray *buttonArray = [NSMutableArray arrayWithCapacity:10];
for (int i = 0; i < NUM_BUTTONS; i++) {
NSUInteger index = arc4random() % NUM_BUTTONS;
UIButton *newButton = [UIButton buttonWithType:UIButtonTypeCustom];
newButton.frame = CGRectMake(i * x, i * y, width, height); // Whatever position and size you need...
UIImage *buttonImage = [UIImage imageNamed:[self.questionImageNames objectAtIndex:index]];
[newButton setBackgroundImage:buttonImage forState:UIControlStateNormal];
[self.view addSubview:newButton];
[buttonArray addObject:newButton];
}
self.myButtons = buttonArray; // Where myButtons is a NSArray property of your class, to store references to the buttons.
}