4

ボタンを押すと起動するシンプルなタイマーを使用しています。60 から 0 まで問題なく動作しますが、押しボタンでタイマーを停止してリセットしたいのです。以下のコードを使用してボタンが押されたときに停止することができましたが、何らかの理由でリセットして 60 で停止することができません。これは単純なはずですが、機能していません。助言がありますか?

シンプルなアクションでタイマーをセット

- (IBAction)timerStart:(id)sender {

if(!secondCounter == 0){
        [countdownTimer invalidate];
    }
    else {
           [self setTimer];
     }
}

タイマーのコード

- (void)timerRun {
    secondCounter = secondCounter - 1;
    int minutes = secondCounter;

    NSString *timerOutput = [NSString stringWithFormat:@"%d", minutes ];
    countDownLabel.text = timerOutput;

    if(secondCounter == 0){
        [countdownTimer invalidate];
        countdownTimer = nil;
    }
}

- (void)setTimer {
    secondCounter = 60;
    countdownTimer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(timerRun) userInfo:nil repeats:YES];

}
4

2 に答える 2

6

秒を 0 に設定する必要があります。そうしないと、タイマーは常に無効になりますが、再度開始することはありません。

- (IBAction)timerStart:(id)sender {
    if(!secondCounter == 0) {
        [countdownTimer invalidate];
        secondCounter = 0;
    }
    else {
        [self setTimer];
    }
}
于 2013-07-25T21:30:16.530 に答える
2

タイマーを止めるとはどういう意味ですか? タイマーが止まりません。countDownLabel.text60を表示する必要がありますか?タイマーを無効にすると、実行が停止し、timerRunメソッドの呼び出しが停止します。タイマーを再起動する場合は、setTimer関数を再度呼び出します。あなたが意味したのはcountDownLabel.text = @"60"[countdownTimer invalidate]; ボタンをもう一度クリックすると、タイマーが再び開始され、ラベルが変更されるということだと思います。これがあなたが探していたものかどうか教えてください。

Christianが言ったように、secondCounterをリセットする必要があります

secondCounter = 0;
于 2013-07-25T21:19:55.003 に答える