在循环中使用NSTimer

时间:2011-01-04 03:59:02

标签: iphone cocoa-touch for-loop nstimer

我需要显示一个计时器从30倒数到0,几次。 (30到0,从30开始,等等)但是当我把它放在for循环中,而不是等到定时器无效开始下一个定时器时,循环遍历并创建几个定时器。

如何形成一个等待计时器失效的循环?

- (IBAction)startCountdown:(id)sender {

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

3 个答案:

答案 0 :(得分:5)

您可以使用scheduledTimerWithTimeInterval

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

在handleTimer中创建下一个计时器

答案 1 :(得分:0)

看起来你正在调用一个名为'timer'的方法。它有什么作用?创建一个新的计时器?这就是原因。创建计时器时,它不会阻止。相反,一旦定时器超时通过,就会调度并执行方法调用。

答案 2 :(得分:0)

您可以做的是:

  • 创建一个包含NSTimer
  • 的类
  • 这个类有一个变量来保存需要计算的次数
  • 在一个计时器(实际上是唯一一个)触发结束时,它会减少计数

您可以通过以下方式调用NSTimer重复:

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

在名为- (void)timerFired的方法中,您将减少计数。如果它达到零,你将停止计时器。

希望这有帮助!