如果已经发生了事情,请取消

时间:2019-02-16 21:26:29

标签: swift xcode

我的应用中有几个计时器。每当我启动另一个计时器时,我都希望启动“主”计时器。因此,无论我启动哪个计时器,“主”计时器也会启动。问题在于,当我然后按下其他计时器时,它会乘以“主”计时器,因此运行速度要快得多。谁能帮忙,请:-)

开始按钮是“主”计时器

@IBAction func hasStartButtonPressed(_ sender: Any) {

    startButton.isHidden = true
    pauseButton.isHidden = false
    stopButton.isEnabled = true

    stopWatchTimer = Timer.scheduledTimer(timeInterval: 1, target: self, selector: (#selector(gameViewController.updateTime)), userInfo: nil, repeats: true)
}


@IBAction func hasHomeButtonPressed(_ sender: Any) {

    homePossesion = Timer.scheduledTimer(timeInterval: 1, target: self, selector: (#selector(gameViewController.homeupdateTime)), userInfo: nil, repeats: true)

    stopWatchTimer = Timer.scheduledTimer(timeInterval: 1, target: self, selector: (#selector(gameViewController.updateTime)), userInfo: nil, repeats: true)
}

@IBAction func hasAwayButtonPressed(_ sender: Any) {

    awayPossesion = Timer.scheduledTimer(timeInterval: 1, target: self, selector: (#selector(gameViewController.awayupdateTime)), userInfo: nil, repeats: true)

    stopWatchTimer = Timer.scheduledTimer(timeInterval: 1, target: self, selector: (#selector(gameViewController.updateTime)), userInfo: nil, repeats: true)
}


@IBAction func hasNeutralButtonPressed(_ sender: Any) {

    neutralPossesion = Timer.scheduledTimer(timeInterval: 1, target: self, selector: (#selector(gameViewController.neutralupdateTime)), userInfo: nil, repeats: true)

    stopWatchTimer = Timer.scheduledTimer(timeInterval: 1, target: self, selector: (#selector(gameViewController.updateTime)), userInfo: nil, repeats: true)
}

1 个答案:

答案 0 :(得分:-1)

private var stopWatchTimer: Timer? = nil {
    willSet {
        stopWatchTimer?.invalidate()
    }
}

private func startStopWatch() {
    if stopWatchTimer == nil {
        stopWatchTimer = Timer.scheduledTimer(timeInterval: 1, target: self, selector: (#selector(gameViewController.updateTime)), userInfo: nil, repeats: true)
    } // else already running
}

private func stopStopWatch() {
    stopWatchTimer = nil
}

@IBAction func hasStartButtonPressed(_ sender: Any) {
    startButton.isHidden = true
    pauseButton.isHidden = false
    stopButton.isEnabled = true

    startStopWatch()
}