我是Objetive-C的新手,需要一些帮助,
我在视图中有一个包含22个UIImage和4个UIButton的数组。 我想用ObjectAtIndex:somecounter从数组中取一个图像并将这个图像随机放置在4个UIButton中的一个中,而不是我想从数组中取另外3个UIImages(随机图像)并在其他3个UIButton中随机定位它们我离开了。
因此,每次计数器都在一个数字中,取出存储在该索引中的UIImage,在其中一个UIButton中随机定位,而不是从数组中取出其他3个随机UIImage,并在3 UIButton上随机定位它们我离开了。
我该怎么做?
使用basvk后,得出了这个答案:
-(void)PlaceWordAndPictueOnScreen { NSArray *buttons = [NSArray arrayWithObjects:btnLetter1, btnLetter2, btnLetter3, btnLetter4, nil]; for (UIButton *btn in buttons) { int randomIndex= random() % [LettersArray count]; UIImage *img = [LettersArray objectAtIndex:randomIndex]; [btn setImage:img forState:UIControlStateNormal]; [LettersArray removeObjectAtIndex:randomIndex]; } }
所以我按照他的说法完成了它的工作就像魅力一样,但是,我确实遇到了问题。 我有一个名为'imgcounter'的计数器,让我说他的值是'4',我想把位于索引4的图像放在'btnLetter'中的一个UIButton中,但是在一个随机按钮中,而不是在剩下的3个“btnLetter”按钮,另外3个随机的UIImage,我该怎么做?
谢谢..
答案 0 :(得分:1)
在我的头顶,这样的事情:
-(void)placeImages {
NSMutableArray *images = [NSMutableArray arrayWithObjects:@"image1.png", @"image2.png", @"image3.png", @"image4.png", @"image5.png", @"image6.png", @"image7.png", @"image8.png", nil]; // etc...
NSArray *buttons = [NSArray arrayWithObjects:btn1, btn2, btn3, btn4, nil];
for (UIButton *btn in buttons) {
int randomIndex= random() % images.length;
UIImage *img = [images objectAtIndex:randomIndex];
[btn setImage:img forState:UIControlStateNormal];
[images removeObjectAtIndex:randomIndex];
}
答案 1 :(得分:0)
-(void)randomizeArray:(NSMutableArray *)array
{
int i, n = [array count];
for(i = 0; i < n; i++) {
int destinationIndex = random() % (n - i) + i;
[array exchangeObjectAtIndex:i withObjectAtIndex:destinationIndex];
}
}
这是您的问题的答案
答案 2 :(得分:-1)
btnLetter1,btnLetter2,btnLetter3,btnLetter4 =应显示图像的UIButtons。
LatterArray =包含所有图像的数组。
imgcounter =当前的柜台指数
如果'imgcounter'在'2'上,那么'btnLetters'按钮之一(1-4之间的随机按钮)应该包含来自'LettersArray'的图像,该图像位于索引编号'2'中,等于'imgcounter ”。所有其他提醒3'btnLetter'应该包含来自'LettersArray'的随机图像。
当再次调用'imgcounter'的函数为'3'时,现在其中一个'btnLetters'(随机的)应该包含位于索引号'3'的'LettersArray'中的另一个图像,再次等于'imgcounter'。另一个提醒3'btnLetter'应该再次包含'Letters Array'中的randome图像等等。
-(void)PlaceWordAndPictueOnScreen2 { NSMutableArray * ButtonArray = [[NSMutableArray alloc] initWithObjects:btnLetter1,btnLetter2,btnLetter3,btnLetter4, nil]; int CorrectImg = random() % [ButtonArray count]; UIImage * img = [UIImage imageNamed:[LettersArray objectAtIndex:imgcounter]]; UIButton * btn = [ButtonArray objectAtIndex:CorrectImg]; [btn setImage:img forState:UIControlStateNormal]; [ButtonArray removeObjectAtIndex:CorrectImg]; NSLog(@"img correct: %i",CorrectImg); while ([ButtonArray count] != 0)// how many times u want to run this { int imgRand = random() % [LettersArray count]; //number for random image int btnRand = random() % [ButtonArray count]; //number for random button //get that random image UIImage * img = [UIImage imageNamed:[LettersArray objectAtIndex:imgRand]]; //get that random button UIButton * button = [ButtonArray objectAtIndex:btnRand]; //put image on that button [button setImage:img forState:UIControlStateNormal]; [ButtonArray removeObjectAtIndex:btnRand]; NSLog(@"btnrnd: %i",btnRand); NSLog(@"imgrnd: %i",imgRand); } }