我有NSArray
NSObjects
。对于NSArray
中的每个对象,我想运行一个计时器直到它完成,然后为下一个对象重新启动它。
NSArray
中的对象将用于填充UITextField
s。
我已经尝试for (NSObject *myThing in self.ArrayOfMyThings)
,它最终会在屏幕上正确显示一个计时器,同时实例化其他一些计时器。谢谢你的阅读。我欢迎有关如何完成这项软件工程专业的建议;)
我的计时器在此方法中实例化:
- (IBAction)startButton:(UIButton *)sender {
if (self.isPaused == YES) {
NSLog(@"startButton pressed");
self.timer = [NSTimer scheduledTimerWithTimeInterval:1.0
target:[NSBlockOperation blockOperationWithBlock:^{
[self counting];
}]
selector:@selector(main)
userInfo:nil
repeats:YES];
self.isPaused = NO;
}
}
计时器使用此方法计数:
- (void)counting {
// ** If the timer is RUNNING **
if (self.isPaused == NO && secondsRemaining > 0) {
secondsRemaining-=1;
elapsedTime+=1;
self.timerLabel.text = [self timeFormatted:secondsRemaining];
NSLog(@"counting: isPaused = %@", self.isPaused ? @"YES" : @"NO" );
if (secondsRemaining < 4 && secondsRemaining > 0) {
[self voiceCountdownAlert];
}
// ** If the timer is FINISHED **
} else if (self.isPaused == NO && secondsRemaining == 0) {
[self resetTimer];
[self voiceTimerCompleteAlert];
secondsRemaining = elapsedTime;
elapsedTime = 0;
self.timerLabel.text = [self timeFormatted:secondsRemaining];
NSLog(@"counting: The timer was reset");
// ** If the timer is paused **
} else if (self.isPaused == YES) {
NSLog(@"counting: isPaused = %@", self.isPaused ? @"YES" : @"NO" );
}
}
此方法是我手动停止计时器的方法:
- (IBAction)stopButton:(UIButton *)sender {
NSLog(@"stopButton pressed");
[self.timer invalidate];
self.timer = nil;
self.isPaused = YES;
}
答案 0 :(得分:1)
我建议创建一个类属性来跟踪&#34;当前&#34;的数字索引。 item,例如:
@property (nonatomic) NSInteger currentIndex;
使用此选项可识别您当前使用的阵列中的哪个项目。当你开始时,将其初始化为0.然后,在&#34;计时器完成&#34;例程,只需增加索引,确保您不在数组的末尾。如果您已完成,请invalidate
您的计时器。如果没有,只需继续使用新的索引值。