2012-01-26 45 views
2

我是新来的Objetive-C,需要一些帮助,在uibutton上放置随机图像

我有一个阵列,在视图上有22个UIImage和4个UIButton。 我想用ObjectAtIndex:somecounter从数组中取图像,并将这个图像随机放在4个UIButton中的一个中,比我想从数组(随机图像)中取出另外3个UIImages并随机在其他3个UIButton中找到它们我已经离开了。

所以在每一次计数器都在一个数字中,取出存储在这个索引中的UIImage,在一个UIButtons中随机找到它,然后从Array中取出其他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,我该怎么做?

谢谢..

+1

嗨Yossi。如果您能告诉我们您是如何处理这个问题的,那将会很有帮助。告诉我们你写的任何代码,我们可以指引你正确的方向。 –

+0

只需重写代码,以便从充满按钮的“NSMutableArray”中选择一个“随机()”按钮。不要忘记从数组中移除该按钮,以免它在稍后被选中。 – basvk

回答

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];       
     } 
+0

所以,我编辑了这个问题,请看看。你给了我这个代码之后。 –

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

这是你的问题的答案

+0

我该如何使用它? :( –

+0

在void替换为数组,并在您发送一个数组那里得到像这样的数组newBtnarray = [randomizearray:yourcurrentBtnarray] – Marios

-1

btnLetter1,btnLetter2,btnLetter3,btnLetter4 =应该呈现图像的UIButtons。

LatterArray =包含所有图像的数组。

imgcounter =当前计数器索引

如果“imgcounter”是“2”,使“btnLetters”按钮中的一个(1-4之间的随机的一个)应containe从图像“LettersArray”使得位于在索引号'2'中等于'imgcounter'。所有其他提醒3'btnLetter'应该包含'LettersArray'的随机图像。

当函数再次调用'imgcounter'将是'3'时,现在'btnLetters'(随机一个)中的一个应该包含位于索引号'3'的LettersArray中的另一个图像,到'imgcounter'。另一个提醒3'btnLetter'应该再次包含来自'Letters Array'的随机图像等。

-(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); 
    } 
}