2012-01-26 6 views
2

は、私が22 UIImageのビューに4 UIButtonsとの配列を持って、私はObjetive-Cに新たなんだといくつかの助けが必要uibutton

をランダムに画像を置きます。 ObjectAtIndex:somecounterで配列からイメージを取り出し、このイメージを4つのUIButtonのうちの1つにランダムに配置すると、配列から別の3つのUIImage(ランダムイメージ)を取り出し、他の3つのUIButton私が残したもの。

このように、カウンタが数値になるたびに、このインデックスに格納されているUIImageをUIButtonsの1つにランダムに配置し、他の3つのUIImageをArrayからランダムに探し出します。私が残した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の1つに入れたいが、ランダムボタンで他の3つの 'btnLetter'ボタンが残っていて、別の3つのUIImageをランダムに配置するにはどうしたらいいですか?私の頭の上アウト

おかげ..

+1

こんにちは。すでに問題にどのようにアプローチしているかを示すことができれば助けになるでしょう。あなたが書いたコードを私たちに提示し、正しい方向にあなたを指し示すことができます。 –

+0

ボタンを使って 'NSMutableArray'から' random() 'ボタンを選択するようにコードを書き直すだけです。そのボタンを配列から削除することを忘れないでください。後で選択されることはありません。 – 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

どうすれば使用できますか? :voidの –

+0

は配列として置き換え、あなたが配列として送る点では、このような配列として取得されます。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'(ランダムなもの)の1つに 'Index numbers' 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); 
    } 
}
関連する問題