Мне действительно нужно было сделать что-то похожее, но вместо того, чтобы перемещать изображения, я решил вместо этого сделать следующее:
- Создайте три кнопки там, где вы хотите, чтобы они появлялись (заранее определенные местоположения).
- Назначьте изображения для каждой кнопки случайным образом (путем рандомизации NSMutableArray с NSStrings имен изображений).
- Вместо назначения @selector (answerCorrect) и @selector (answerUncorrect), присвойте @selector (checkIfCorrect:)
- Определите checkIfCorrect так:
- (void) checkIfCorrect: (id) отправитель {UIImage * buttonImage = sender.image;
if (buttonImage == [UIImage
imageNamed: @ "kncpf.png"]) {[self
answerCorrect]; } else {[self
answerIncorrect]; }
}
ИЗМЕНЕНО ДЛЯ ВКЛЮЧЕНИЯ КОДА, который Я РЕКОМЕНДУЮ:
Также вы звоните
int length02 = [arrayPossiblePositions count];
int chosen02 = arc4random() % length02;
[arrayPossiblePositions removeObjectAtIndex:chosen02];
int chosen04 = arc4random() % length02;
[arrayPossiblePositions removeObjectAtIndex:chosen04];
int chosen05 = arc4random() % length02;
Обратите внимание, что length02 остается прежним, а размер arrayPossiblePositions изменяется. Вероятно, это первая причина сбоя вашего кода: вы пытаетесь удалить индекс из массива, который находится за пределами подсчета массива!
Я не проверял, но должен работать: (не забудьте определить checkanswer (), как я упоминал выше)
NSMutableArray *imagesArray = [NSMutableArray arrayWithObjects:@"image1.png", @"image2.png", @"image3.png", nil];
int count1 = [imagesArray count];
int index1 = arc4random() % count1;
button1 = [UIButton buttonWithType:UIButtonTypeCustom];
CGRect newSize = CGRectMake(30, 80, 130, 130);
button1.frame = newSize;
[button1 setImage:[UIImage imageNamed:[imagesArray objectAtIndex:index1]] forState:UIControlStateNormal];
[button1 addTarget:self action:@selector(checkAnswer:) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:button1];
[imagesArray removeObjectAtIndex:index1];
int count2 = [imagesArray count];
int index2 = arc4random() % count2;
button2 = [UIButton buttonWithType:UIButtonTypeCustom];
CGRect newSize = CGRectMake(160, 80, 130, 130);
button2.frame = newSize;
[button2 setImage:[UIImage imageNamed:[imagesArray objectAtIndex:index2]] forState:UIControlStateNormal];
[button2 addTarget:self action:@selector(checkAnswer:) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:button2];
[imagesArray removeObjectAtIndex:index2];
int count3 = [imagesArray count];
int index3 = arc4random() % count3;
button3 = [UIButton buttonWithType:UIButtonTypeCustom];
CGRect newSize = CGRectMake(290, 80, 130, 130);
button3.frame = newSize;
[button3 setImage:[UIImage imageNamed:[imagesArray objectAtIndex:index3]] forState:UIControlStateNormal];
[button3 addTarget:self action:@selector(checkAnswer:) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:button3];