現在、私はストップウォッチが必要なゲームを開発しています.1分と言います.ユーザーが再生ボタンをタップするとゲーム画面に入ります.1分のストップウォッチカウントダウンを実行したい01:00,00:59,00: 58など。そのため、ストップウォッチを実装するにはNSTimerが理想的な選択肢であることがわかりました。したがって、ラベルを取得し、NSTimerのインスタンスを作成し、時間間隔を割り当て、タイマーラベルの値を減らし始めました。
-(void)viewDidAppear:(BOOL)animated
{
self.stopWatchTimer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(viewWillAppear:) userInfo:nil repeats:YES];
[super viewDidAppear:YES];
}
-(void)viewWillAppear:(BOOL)animated
{
static int currentTime = 60;
int newTime = currentTime--;
int minutesRemaining = newTime / 60; // integer division, truncates fractional part
int secondsRemaining = newTime % 60; // modulo division
self.timerLabel.text = [NSString stringWithFormat:@"%02d:%02d", minutesRemaining, secondsRemaining];
if ([self.timerLabel.text isEqualToString:@"00:00"])
{
[stopWatchTimer invalidate];
}
[super viewWillAppear:YES];
}
ここでの問題は、タイマーが 01:00、00:59、00:58 の実行を開始し、たとえば 53 秒で続行し、別のビューに移動して戻ってきた場合、00:53、00:52 から実行されていることです。オンですが、01:00から実行したいので、viewDidDisappear ieでNSTimerの無効化を実装しました
-(void)viewDidDisappear:(BOOL)animated
{
if ([stopWatchTimer isValid])
{
[stopWatchTimer invalidate];
self.stopWatchTimer = nil;
}
[super viewDidDisappear:YES];
}
それでも同じ問題が存在します!
この問題について多くの調査を行いましたが、有用で機能する答えは見つかりませんでした。
誰かが私を案内してくれませんか、助けていただければ幸いです。
事前に感謝します:)