カウントダウンタイマーを表示しているラベルがあります。
これで、アプリを閉じるとタイマーがオフになり、ラベルのテキストもオフになります。ラベルのテキスト値を保存できることはわかっています。しかし、アプリが再起動したときに正しいカウントダウンを表示するにはどうすればよいですか。
アプリが再度起動された3分後に00:05:35に閉じると、ラベルには00:02:35と表示され、残りのカウントダウンのためにタイマーが表示されます。
カウントダウンタイマーを表示しているラベルがあります。
これで、アプリを閉じるとタイマーがオフになり、ラベルのテキストもオフになります。ラベルのテキスト値を保存できることはわかっています。しかし、アプリが再起動したときに正しいカウントダウンを表示するにはどうすればよいですか。
アプリが再度起動された3分後に00:05:35に閉じると、ラベルには00:02:35と表示され、残りのカウントダウンのためにタイマーが表示されます。
はい、アプリが閉じられた時刻と残りのカウントダウン時間を 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"];