1

在我的应用程序中,我让用户设置倒数计时器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 时,我想触发一个事件。

我不知道如何减少每秒倒计时。

谢谢你的帮助。

4

3 回答 3

3

你可以这样做:

[NSTimer timerWithTimeInterval:1.00 target:self selector:@selector(decrementByOne:) userInfo:nil repeats:YES];
于 2013-02-26T13:34:42.690 回答
2

将您的countDownDuration属性UIDatePicker(值以秒为单位)保存在一个名为secondsLeft.

self.sleepTimer = [NSTimer scheduledTimerWithTimeInterval:1.00 target:self selector:@selector(timerFired:) userInfo:nil repeats:YES];

timerFired:这将每秒调用您的方法。减去secondsLeft1。用剩下的时间更新你UILabel的时间(将你的秒数格式化为 hh:mm:ss -请参阅有关格式化的这个问题)。验证倒计时是否还有时间,如果倒计时完成,则采取适当的措施 ( secondsLeft <= 0)。

倒计时完成后记得清理;

[self.sleepTimer invalidate];
self.sleepTimer = nil;
于 2013-02-26T13:51:20.960 回答
0

记下你的日期,将其保存到一个属性中,然后查看 NSDates

– dateByAddingTimeInterval:

所以如果你这样做

[self.date dateByAddingTimeInterval:-1];

您将日期递减 1 秒。之后,使用新的计算日期更新您的 UI。

此外,您可以将所有代码打包在一个函数中并通过调用执行此函数:

performSelector:withObject:afterDelay: 
于 2013-02-26T13:35:51.383 回答