我需要显示一个计时器从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];
}
答案 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
的方法中,您将减少计数。如果它达到零,你将停止计时器。
希望这有帮助!