0

私はこのNSMutableアレイを持っています。2秒ごとに1つずつ読み取り、テキストビューを更新します。しかし、今私が欲しいのは、2秒ごととは異なる時間間隔でNSMutable配列から1つずつ読み取ることです。どうすればそれができますか。

- (void)viewDidLoad{
myArray = [[NSMutableArray alloc]initWithObjects:@"String1",@"String2",@"String3",@"String4", @"String5",..... nil];  

[NSTimer scheduledTimerWithTimeInterval:2.0
                             target:self
                           selector:@selector(updateText:)
                           userInfo:nil
                            repeats:YES];


- (void)updateText:(NSTimer *)theTimer 
    {


        if (index < [myArray count])
        {
            myTextView.text = [myArray objectAtIndex:index];
            index++;
        }
        else
            index = 0;
        }
}

手伝ってくれてありがとう。

4

4 に答える 4

1

updateTextセレクターで、配列にオブジェクトがなくなるまで、間隔が異なる新しいNSTimerを作成するだけです。

于 2013-01-28T20:11:51.263 に答える
1

シンプル:毎回タイマーをキャンセルし、希望の間隔でタイマーを再作成します(もちろんタイマーへの参照に固執します)。

于 2013-01-28T20:09:15.763 に答える
1

ビューが読み込まれるたびに間隔の値を変更するだけでよい場合は、乱数を試してみることができます。次の例では、2〜10の乱数が返されます。

[NSTimer scheduledTimerWithTimeInterval:arc4random() % 10 + 2
                             target:self
                           selector:@selector(updateText:)
                           userInfo:nil
                            repeats:YES];
于 2013-01-28T20:25:42.017 に答える
0

PerformSelector:withObject:afterDelayを使用しますが、ランダムな遅延を使用します。

[self PerformSelector:@selector(updateText :) withObject:nil afterDelay:arc4random()%10 + 2];

于 2013-01-28T20:58:36.843 に答える