我有一个标签,我正在显示倒数计时器。
现在,如果我关闭我的应用程序,计时器将关闭,标签的文本也将关闭。我知道我们可以保存标签的文本值。但是,当应用重新开始时,我们如何显示正确的倒计时。
假设我再次启动应用程序3分钟后00:05:35关闭标签应该显示00:02:35并且计时器应该在那里进行剩余倒计时
答案 0 :(得分: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"];
答案 1 :(得分:2)
或者您可以只计算希望它过期的日期/时间(NSDate)并将其保存在默认值中。在重新启动时与该日期进行比较,以确定它是否已过期,或者是否需要设置计时器以捕获未来的到期日期。