2016-12-15 4 views
-1

私はSwiftでプログラミングしていますが、問題があります。 NSTimerを使ってタイマーを使ってコードを書いていますが、タイマーを止めることに成功しました。タイマーを再起動するためのボタンを作成しましたが、コードの入力方法はわかりません。Swift NSTimer Pause Resume

import UIKit 

class ViewController: UIViewController { 
    /*Timer1*/ 
    var landmarkTime = 0 
    var landmarkNSTimer = Timer() 

    /*Timer3*/ 
    func landmarkTimer() { 
     landmarkTime += 1 
    } 

    /*PauseButton*/ 
    @IBAction func PauseButton(_ sender: Any) { 
     landmarkNSTimer.invalidate() 
    } 

    /*ResumeButton*/ 
    @IBAction func ResumeButton(_ sender: Any) { 
     /*I want to restart the timer in this part, but I do not know what code to put in.*/ 
    } 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     /*Timer2*/ 
     landmarkNSTimer = Timer(timeInterval: 1, target: self, selector: #selector(ViewController.landmarkTimer), userInfo: nil, repeats: true) 
     RunLoop.main.add(landmarkNSTimer, forMode: RunLoopMode.commonModes) 
    } 
} 

/* ResumeButton */これは問題です。私はこの部分に/* Timer2 */とタイプしましたが、私は未知の問題があり、別のコードを探しています。 /* ResumeButton */に入力する新しいコードを教えて、タイマーを再起動できるようにします。

+0

ドキュメントを読んだことがありますか? https://developer.apple.com/reference/foundation/timer – Alexander

+1

「レジューム」コードは、あなたが 'viewDidLoad'で持っているコードと同じです。 – rmaddy

答えて

1

タイマーを一時停止しておらず、停止しました。

二度とを発射から受信機を停止し、その実行ループからの削除を要請する:あなたはinvalidateのドキュメントを読んでいる場合、それは[強調追加]言います。

タイマーは一時停止しません。それは単にAPIの一部ではありません。一時停止/再開の動作を希望する場合は、次のようなさまざまな方法があります。

  • 再開するときに新しいタイマーを作成します。
  • 一時停止時にfireDateDate.distantFutureに設定してから、再開するとすぐに設定してください。
  • ブール変数を使用して一時停止状態を示し、タイマーコールバックでタイマーが起動したときにその変数をチェックします。一時停止の場合== true、何もしないでください。
関連する問題