0

配列からランダムな要素を選択するプログラムを作成しました。

「開始」ボタンを押したら、そのコードをループするにはどうすればよいですか?

「開始」ボタンを押すと、配列から新しい要素が選択され、5秒ごとにテキストフィールドに書き込まれるようにしたいと思います。回答ありがとうございます。

@implementation MARandom

- (IBAction)Start:(id)sender {

    NSArray *tones;

    tones = [NSArray arrayWithObjects: @"F#0", @"Gb0", @"G0", @"G#0",@"Ab0",@"A0",@"A#0",@"Bb0",@"B0",
            @"C1",@"C#1",@"Db1",@"D1",@"D#1",@"Eb1",@"E1",@"F1",@"F#1",@"Gb1",@"G1",@"G#1",@"Ab1",@"A1",@"A#1",@"Bb1",@"B1",
            @"C2",@"C#2",@"Db2",@"D2",@"D#2",@"Eb2",@"E2",@"F2",@"F#2",@"Gb2",@"G2",@"G#2",@"Ab2",@"A2",@"A#2",@"Bb2",@"B2",
            @"C3",@"C#3",@"Db3",@"D3",@"D#3",@"Eb3",nil];

    i= (arc4random() % 48);

        NSString *Tone; 
        Tone = [tones objectAtIndex: i];

        [TextField setStringValue:(NSString *)Tone];
    }
4

1 に答える 1

0

これを試してください:

- (IBAction)Start:(id)sender {
[NSTimer scheduledTimerWithTimeInterval:5.0
                                 target:self
                               selector:@selector(updateTextFieldWithRandomNumber)
                               userInfo:nil
                                repeats:YES];
}

-(void)updateTextFieldWithRandomNumber{
NSArray *tones;

tones = [NSArray arrayWithObjects: @"F#0", @"Gb0", @"G0", @"G#0",@"Ab0",@"A0",@"A#0",@"Bb0",@"B0",
         @"C1",@"C#1",@"Db1",@"D1",@"D#1",@"Eb1",@"E1",@"F1",@"F#1",@"Gb1",@"G1",@"G#1",@"Ab1",@"A1",@"A#1",@"Bb1",@"B1",
         @"C2",@"C#2",@"Db2",@"D2",@"D#2",@"Eb2",@"E2",@"F2",@"F#2",@"Gb2",@"G2",@"G#2",@"Ab2",@"A2",@"A#2",@"Bb2",@"B2",
         @"C3",@"C#3",@"Db3",@"D3",@"D#3",@"Eb3",nil];

i= (arc4random() % 48);

NSString *Tone; 
Tone = [tones objectAtIndex: i];

[TextField setStringValue:(NSString *)Tone];
}

また、おそらくviewDidLoadで繰り返し呼び出されるコードではなく、1か所で配列を準備することを検討してください。

注:テストされていないコードですが、機能するはずです。

于 2011-09-19T19:53:50.200 に答える