【发布时间】:2009-10-19 10:19:15
【问题描述】:
我有一个显示倒计时的标签。
现在,如果我关闭我的应用程序,计时器将关闭,标签的文本也将关闭。我知道我们可以保存标签的文本值。但是我们如何在应用重新启动时显示正确的倒计时。
假设我在 3 分钟后在 00:05:35 关闭,当应用再次启动时,标签应该显示 00:02:35,并且计时器应该在那里用于剩余倒计时
【问题讨论】:
标签: objective-c iphone-sdk-3.0 nsuserdefaults nstimer
我有一个显示倒计时的标签。
现在,如果我关闭我的应用程序,计时器将关闭,标签的文本也将关闭。我知道我们可以保存标签的文本值。但是我们如何在应用重新启动时显示正确的倒计时。
假设我在 3 分钟后在 00:05:35 关闭,当应用再次启动时,标签应该显示 00:02:35,并且计时器应该在那里用于剩余倒计时
【问题讨论】:
标签: objective-c iphone-sdk-3.0 nsuserdefaults nstimer
是的,只需在 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"];
或者您可以只计算您希望它过期的日期/时间 (NSDate) 并将其保存在您的默认值中。重新启动时与该日期进行比较,以了解它是否已过期,或者您是否需要设置一个计时器来捕捉未来的过期时间。
【讨论】: