2011-01-04 8 views
0

私は、30回から数回まで数えてタイマーを数回表示する必要があります。 (30から0、30で開始する、など)しかし、私はforループに配置すると、次のタイマーを開始するためにタイマが無効になるまで待つのではなく、ループが反復していくつかのタイマーが作成されます。ループでのNSTimerの使用

タイマーが無効になるまで待機するループを作成するにはどうすればよいですか?

- (IBAction)startCountdown:(id)sender {

 NSNumber *rounds = [[NSNumber alloc]initWithInt:sliderRounds.value]; 
    for (int i = rounds.intValue; i > 0; i--) { 
     [self timer]; 
} 
+1

'[セルフタイマー]'で何を?作成しますか – donkim

+0

にはNSrunループ機能を使用します – GhostRider

+0

タイマーはNSTimerを含むメソッドです – SteveStifler

答えて

5

あなたはscheduledTimerWithTimeInterval

[NSTimer scheduledTimerWithTimeInterval: 0.5 
      target: self 
      selector: @selector(handleTimer:) 
      userInfo: nil 
      repeats: NO]; 

を使用することができますし、handleTimerの内側に、あなたは次のタイマ

+0

素晴らしい作業!ありがとう – SteveStifler

0

Looks like you are calling some method called 'timer' on self. What does it do? Creates a new timer? Then this is why. When a timer is created, it doesn't block. Instead a method call is scheduled and executed once the timer timeout passes.

0

What you could do is the following:

  • Create a class that holds an NSTimer
  • このクラスは、それが1つのタイマー(そして実際に、一つだけ)の発射の終わりに
  • をカウントする必要がありますどのように多くの時間保持する変数を持つことになり、それが数
をデクリメント

あなたがでそれを呼び出すことにより、NSTimer繰り返しを持つことができます:あなたは12月、- (void)timerFiredと呼ばれる方法で

[NSTimer scheduledTimerWithTimeInterval:30.0f 
          target:self 
          selector:@selector(timerFired) 
          userInfo:nil 
          repeats:YES]; 

うカウントを増やす。ゼロに達すると、タイマーを停止します。

希望すると便利です。

関連する問題