从具有for循环的数组中的字符串中选择一个随机图像

时间:2012-02-05 10:16:40

标签: iphone objective-c ios arrays xcode

我想写点什么,但我不知道该怎么做以及从哪里开始。

所以,我有一个名为imagesArray的数组,其中包含20个动物图像,比方说,数组的5个第一个图像将是:Rabbit.png,Horse.png,Lizard的图像。 png,Mouse.png和Dog.png。

因此,在调用wordsArray的数组中,我将拥有索引范围0-4中的项目:“Rabbit”,“Horse”,“Lizard”,“Mouse”和“Dog”等等。 。

我还有4 UIButtons

我想要的程序是什么,当for循环在item0上时,意味着i=0,来自imagesArray的图像是Rabbit.png,而来自wordsArray的单词是“兔子“,我想从”兔子“这个词中选择一个随机字母,并在4个UIButton之一上显示一次,其他3个UIButton将显示任何其他字母但不同的字母。

我仍然没有找到一个好办法。也许是因为我对Objective-C或编程都不熟悉......

我怎样设法做到这一点?

编辑

我有这个代码,但它不好,因为它使用UIImages而不是单词,我不知道如何用文字来做..

-(void)placeWordAndPictueOnScreen
{
    // sets the letter in a random button
    NSMutableArray * ButtonArray = [[NSMutableArray alloc]initWithObjects:btnLetter1,btnLetter2,btnLetter3,btnLetter4, nil];
    int CorrectImg = random() % [ButtonArray count];
    imgclick = CorrectImg;
    UIImage * img = [UIImage imageNamed:[LettersArray objectAtIndex:imgcounter]];

    UIButton * btn = [ButtonArray objectAtIndex:CorrectImg];
    [btn setImage:img forState:UIControlStateNormal];
    [ButtonArray removeObjectAtIndex:CorrectImg];

    // sets the other buttons with random letters
    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];
    }
}

1 个答案:

答案 0 :(得分:1)

我相信下一个方法可以帮助你

    -(NSMutableArray *)getStringInArray:(NSString *)string{
    NSMutableArray *charsArray=[[NSMutableArray alloc]init];
    while (![string isEqualToString:@""]) {
        [charsArray addObject:[string substringToIndex:1]];
        string=[string substringFromIndex:1];
    }
    return [charsArray autorelease];
}