在我的应用中,我允许用户使用UIDatePicker's
CountDownTimer
设置倒数计时器。
我有一个UILabel
来显示计数时间当用户从CountDownTimer中选择时间时,我想显示在CoutDownTimer中选择的用户如下图所示。
因此我使用以下代码
检索用户从CountDownTimer
中选择的计数时间
self.dateFormatter = [[NSDateFormatter alloc] init];
[self.dateFormatter setDateFormat:@"HH:mm:ss"];
self.sleepTimer = [NSTimer timerWithTimeInterval:1.00 target:self selector:@selector(timerFired:) userInfo:nil repeats:NO];
当它到达00:00时,我想发射一个事件。
我不知道如何减少每一秒倒计时。
感谢您的帮助。
答案 0 :(得分:3)
您可以通过以下方式完成:
[NSTimer timerWithTimeInterval:1.00 target:self selector:@selector(decrementByOne:) userInfo:nil repeats:YES];
答案 1 :(得分:2)
将countDownDuration
的{{1}}属性(值以秒为单位)保存在名为UIDatePicker
的实例变量中。
secondsLeft
这将每秒调用您的方法self.sleepTimer = [NSTimer scheduledTimerWithTimeInterval:1.00 target:self selector:@selector(timerFired:) userInfo:nil repeats:YES];
。将timerFired:
减去1.用剩余时间更新secondsLeft
(格式化时将秒数格式化为hh:mm:ss - See this question)。验证倒计时是否还有剩余时间,并在倒数完成后采取适当的措施(UILabel
)。
记得在倒计时完成后清理;
secondsLeft <= 0
答案 2 :(得分:0)
记下您的日期,将其保存到房产中并查看NSDates
– dateByAddingTimeInterval:
所以,如果你这样做
[self.date dateByAddingTimeInterval:-1];
你将把你的日期递减1秒。 之后,使用新计算的日期更新UI。
此外,您可以将所有代码打包在一个函数中,并通过调用:
执行此函数performSelector:withObject:afterDelay: