1

26 個のアルファベットを持つ配列と、3 つの UIButton を持つ 2 番目の配列があります。配列からランダムな 3 つのアルファベットを取得し、それらを 3 つの UIButtons のタイトルとしてランダムに設定します。コードは次のとおりです。

-(void)placeImages {
     NSMutableArray *alphabetarr=[[NSArray alloc]  
     initWithObjects:@"A",@"B",@"C",@"D",@"E",@"F",@"G",@"H",@"I",@"J",@"K",@"L",
     @"M",@"N",@"O",@"P",@"Q",@"R",@"S",@"T",@"U",@"V",@"W",@"X",@"Y",@"Z",nil];
     NSMutableArray *buttons = [NSArray arrayWithObjects:btn1, btn2, btn3, nil];
     for (UIButton *btn in buttons) {
           int randomIndex= arc4random() % [alphabetarr count];
           NSString* titre = [alphabetarr objectAtIndex:randomIndex];
           [btn setTitle:titre forState:UIControlStateNormal]; 
           [alphabetarr removeObjectAtIndex:randomIndex];                        
    }

このコードを使用することで、1 つの UIButton に 1 つのアルファベットしか表示されませんでした。配列から 3 つのランダムなアルファベットを選択し、これらの 3 つのランダムなアルファベットを配列の 3 つの UIButton のタイトルとして設定する方法を提案してください。

4

4 に答える 4

1

問題は、ボタンのテキストの内容を毎回新しい文字で上書きしていることのようです。ボタンから前のテキストを保存し、新しい文字でリセットするのではなく、毎回新しい文字を追加することをお勧めします。

//gather random letter
NSString *titre = [alphabetarr objectAtIndex:randomIndex];

//gather current string
NSMutableString *currentString = [[btn titleLabel] text];

//append string
[currentString appendString:titre];

//set button text
[btn setTitle:currentString forState:UIControlStateNormal];

これにより、ランダム配列から返された最後の文字に設定するのではなく、ボタンに毎回新しい文字を追加する必要があります。

お役に立てば幸いです:)

于 2012-05-14T12:51:33.807 に答える
1

removeObjectAtIndex:NSMutableArrayメソッドであり、NSArrayのではありません。タイプを変更alphabetarrすれば、問題は解決するはずです。

rand()数の生成には またはarc4random()関数を使用します。ここでは、2 つの比較を見ることができます。

于 2012-05-14T10:56:08.110 に答える