2016-04-06 8 views
1

私はストップウォッチを作り続けています。複数のNSTimer.scheduledTimerWithTimeIntervalを防ぐ方法をスウィフト

と開始、停止、一時停止のアクションがうまく機能します。私は行動を開始クリックすると

はしかし、

time = NSTimer.scheduledTimerWithTimeInterval(1, target: self, selector: Selector("result"), userInfo: nil, repeats: true) 

このアクションである二重の時間が再び開始し、時間の実行を高速化!

どのように私はアクションを防ぐのですか?

ありがとうございます!!!

+0

まだ設定されていない時間を設定するとチェックしますか? – user3069232

答えて

3

あなたのクラスの上に変数を宣言する必要があります:

var timer = NSTimer() 

、あなたがそうのように、あなたのスタートボタンで、このタイマ変数を割り当てる:停止したい時はいつでも

@IBAction func startTimerButtonTapped(sender: UIButton) { 
    time = NSTimer.scheduledTimerWithTimeInterval(1, target: self, selector: Selector("result"), userInfo: nil, repeats: true) 
} 

このタイマーを無効にする必要があります:

timer.invalidate() 

開始ボタンをクリックしたい場合は、 2回以上、スケジュールを設定する前にまず無効にする必要があります。

@IBAction func startTimerButtonTapped(sender: UIButton) { 
     timer.invalidate() 
     time = NSTimer.scheduledTimerWithTimeInterval(1, target: self, selector: Selector("result"), userInfo: nil, repeats: true) 
    } 

希望します。

+0

はい私は同じことをしました。ただし、startTimerButtonTapped関数は複数回アクティブ化できます。私はそれを防止したい。 –

+0

私は言ったようにそれを無効にしましたか? – Khuong

+0

ああ、startTimerButtonTapped関数のtimer.invalidate()が表示されませんでした。ありがとうそれは素晴らしい作品! –

0

私は簡単な答えを見つけました!

しかし、上記の答えは私が見つけた答えより簡単です。

とき

Timer.scheduledTimerWithTimeInterval() 

何を私が見つけたことは、私はちょうどlet変数を宣言する必要が

が、その後

var isStop = true 

言った私は

isStop = false 

を配置する必要があり、実行し、また、すべての一時停止NDストップアクション は、私は別の考えを私に思い出させるため

isStop = true 

みんなありがとうを配置する必要があります!

関連する問題