2012-07-10 82 views
-2

我希望在我的应用程序中创建一个倒计时器,以便我可以给予一定的持续时间(如15分钟或15:00)并从动作开始。iPhone倒数计时器对于一个选定的时间

我还需要该倒数计时器从外部Web服务中获取已用时间和总持续时间信息,并开始倒数剩余时间。

这实际上是一个测验应用程序,用户将看到一系列问题并将计时器放置在问题屏幕上(对于整个测验而不是仅针对一个问题)。用户可以设置测验的持续时间,一旦用户开始测验,倒数计时器就会开始。还有一个暂停功能,用户可以暂停测试,经过的时间和总时间的信息将被注册到Web服务中。用户可以在倒数计时器从暂停时开始(从网络服务中获取这些信息)的任何时候恢复测验。

在此先感谢。 PS:说实话,我不知道如何去解决这个问题。关于在Web服务中存储什么样的格式以及许多其他的东西,比如NSTimer在循环中运行之后程序是否会继续前进,等等,都存在着很多混淆。所以你明白我的意思。是的,NSTimer确实解决了这个问题,因为Alex告诉我们并提供了一个示例代码。

+0

你有看的[的NSTimer]的文档(https://developer.apple.com/library/mac/#documentation/Cocoa/Reference /Foundation/Classes/nstimer_Class/Reference/NSTimer.html)?你有什么尝试? – Dima 2012-07-10 18:30:30

回答

3

NSTimer的文档。

一般情况下,你需要创建一个NSTimer它调用的方法每一秒,像这样:

NSTimer *theTimer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(tick) userInfo:nil repeats:YES]; 

然后在滴答,你会递减变量持有的剩余时间,并更新显示器上的标签。

此外,如果你想要一些工作示例代码,在GitHub上的check out my little countdown app

0

试试这些代码,我已经在我的应用程序中实现了它。最好重新发送OTP类型的功能。

int secondsLeft; 
int hours, minutes, seconds; 

secondsLeft = 60; 
[self countdownTimer]; 

-(void)countdownTimer { 
// secondsLeft = hours = minutes = seconds = 0; 
timer = [NSTimer scheduledTimerWithTimeInterval:1.0f target:self selector:@selector(updateCounter:) userInfo:nil repeats:YES]; 

}

- (void)updateCounter:(NSTimer *)theTimer { 
if(secondsLeft > 0) { 
    secondsLeft -- ; 
    hours = secondsLeft/3600; 
    minutes = (secondsLeft % 3600)/60; 
    seconds = (secondsLeft %3600) % 60; 
    labelSeconds.text = [NSString stringWithFormat:@"%02d seconds left.",seconds]; 
} else { 

    [timer invalidate]; 
    return; 
} 

}