把随机图像放在uibutton上

时间:2012-01-26 10:01:41

标签: iphone objective-c ios xcode uiimageview

我是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,我该怎么做?

谢谢..

3 个答案:

答案 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);
    }
}