7

我正在尝试访问 NSTimer X 的剩余时间。我想每秒更新一个按钮的标题以反映剩余时间mm:ss直到零。我在这里找不到任何东西。

例如:[btY setTitle:[What to insert here?] forState:UIControlStateSelected];

还是您宁愿以不同的方式解决这个问题?

4

3 回答 3

16

您可以使用 fireDate

NSTimer *timer = [NSTimer timerWithInterval:1.0 target:self selector:@selector(updateButton) userInfo:nil repeats:YES];


- (void)updateButton:(NSTimer*)timer
{
    float timeRemaining = timer.fireDate.timeIntervalSinceNow;
    // Format timeRemaining into your preferred string form and 
    // update the button text
}
于 2015-05-06T22:33:45.713 回答
2

这通常不是您解决此问题的方法。

创建一个重复的 NSTimer 设置为您想要更新按钮的分辨率。

因此,例如,如果您希望您的按钮每秒更改一次直到零,请创建一个 NSTimer,如下所示:

NSTimer *timer = [NSTimer timerWithInterval:1.0 target:self selector:@selector(updateButton) userInfo:nil repeats:YES];

然后执行updateButton;基本上有一个剩余秒数的计数器,每次updateButton被调用时,将计数器减一,并更新按钮的标题。

于 2012-07-01T18:17:48.710 回答
0

您将无法获得此类信息,而是需要多次运行计时器,例如,如果您想每 30 秒更新一次带有文本的按钮,而不是启动 30 秒的计时器启动一个 1 秒的计时器并重复 30 次

于 2012-07-01T18:18:13.067 回答