Objective c 如何访问非重复NSTimer的剩余时间

Objective c 如何访问非重复NSTimer的剩余时间,objective-c,ios,uibutton,nstimer,Objective C,Ios,Uibutton,Nstimer,我正在尝试访问NSTimer X的剩余时间。我希望每秒更新一个按钮的标题,以反映剩余的mm:ss,直到零。我在这里什么也找不到 例如:[btY setTitle:[在此处插入什么?]forState:UIControlStateSelected] 或者你更愿意用另一种方式来解决这个问题?这通常不是你解决这个问题的方式 创建一个重复NSTimer集,设置为要更新按钮的分辨率 例如,如果您想让按钮每秒更改一次直到零,请创建一个NSTimer,如下所示: NSTimer *timer = [NSTim

我正在尝试访问NSTimer X的剩余时间。我希望每秒更新一个按钮的标题,以反映剩余的
mm:ss
,直到零。我在这里什么也找不到

例如:
[btY setTitle:[在此处插入什么?]forState:UIControlStateSelected]


或者你更愿意用另一种方式来解决这个问题?

这通常不是你解决这个问题的方式

创建一个重复NSTimer集,设置为要更新按钮的分辨率

例如,如果您想让按钮每秒更改一次直到零,请创建一个NSTimer,如下所示:

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

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

您将无法获取此类信息,相反,您将需要运行计时器几次,例如,如果要每30秒用文本更新按钮一次,而不是用30秒启动计时器,请用1秒启动计时器并重复30次

您可以使用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
}

非常感谢,即使对于这么简单的工作,这听起来像是一大堆文字:P@Coltan字体很高兴它有帮助。如果问题已解决,您可以使用左侧的绿色复选标记将其标记为已接受答案。这是计时器上“如何访问剩余时间”问题的正确答案,但属性错误(至少在iOS 8上)。它应该是:
float timeRemaining=timer.fireDate.timeIntervalSinceNow