1

我有一个标签,上面显示倒数计时器。

现在,如果我关闭我的应用程序,计时器将关闭,标签的文本也将关闭。我知道我们可以保存标签的文本值。但是当应用程序再次启动时,我们如何显示正确的倒计时。

假设我在 3 分钟后在 00:05:35 关闭应用程序再次启动时,标签应显示 00:02:35 并且计时器应该在那里用于剩余倒计时

4

2 回答 2

8

是的,只需在 NSUserDefaults 中存储您的应用关闭的时间和剩余的倒计时时间。当应用程序再次启动时,您会从 NSUserDefaults 获得关闭时间和剩余时间。使用当前时间,计算倒计时时剩余的校正时间是简单的数学运算。

像这样的东西可能会奏效,当然未经测试:

// save state
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
NSDate *now = [NSDate date];
double countDown = 45.0; // in seconds, get this from your counter
[userDefaults setObject:now forKey:@"timeAtQuit"];
[userDefaults setDouble:countDown forKey:@"countDown"];
[userDefaults synchronize];


// restore state
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
NSDate *timeAtQuit = [userDefaults objectForKey:@"timeAtQuit"];
double timeSinceQuit = [timeAtQuit timeIntervalSinceNow];
double countDown = timeSinceQuit + [userDefaults doubleForKey:@"countDown"];
于 2009-10-19T10:25:57.077 回答
2

或者您可以只计算您希望它过期的日期/时间 (NSDate) 并将其保存在您的默认值中。在重新启动时,与该日期进行比较以了解它是否已过期,或者您是否需要设置一个计时器来捕捉未来的过期时间。

于 2009-10-22T21:06:59.537 回答