将倒数计时器值重置为保存在阵列中的默认值

问题描述 投票:0回答:2

我正在从数组中的默认INT值创建一个倒数计时器,但是我不知道如何将计时器重置为数组中的原始值。就是说,例如,当用户按下“停止冲泡”时,倒数计时器将从5分钟重新开始。有人可以帮助我找出我做错了什么还是想念什么?我正在迈向iOS开发的第一步。

提前感谢!

我的代码:

'''

@objc func runTimer() {

    cafe.time -= 1
    labelCowntdownTimer.text = "\(cafe.time)"
    // MM:SS:_

    let flooredCounter = cafe.time

    let minute = (flooredCounter % 3600) / 60
    var minuteString = "\(minute)"
    if minute < 10 {
        minuteString = "0\(minute)"
    }

    let second = (flooredCounter % 3600) % 60
    var secondString  = "\(second)"
    if second < 10 {
        secondString = "0\(second)"
    }

    labelCowntdownTimer.text = "\(minuteString):\(secondString)"

}

//Mark: - resetTimer

@objc func resetTimer() {

    timer.invalidate()
    //cafe.time
    runTimer()

}


//Mark: - ButtonPressed - Start Timer

@IBAction func startButtonPressed(_ sender: Any) {

    if !isTimerRunning {

        timer = Timer.scheduledTimer(timeInterval: 1.0, target: self, selector: #selector(runTimer), userInfo: nil, repeats: true)

        isTimerRunning = true
        startButton.setTitle("Stop Brewing", for: .normal)
    } else {
        resetTimer()
        isTimerRunning = false
        startButton.setTitle("Star Brewing", for: .normal)

    }
}

'''

ios arrays swift xcode timer
2个回答
0
投票

尝试下面的代码

@objc func resetTimer() {

    timer.invalidate()
    timer = nil //You should also need to nil to a timer to stop it.

    //runTimer() - also comment this line as its not needed to call this function after stop timer.

    //Reinitialize all your required variable here to calculate the time
}

0
投票

viewDidload()中或每当将值存储在数组中时,将值存储在变量中。

let initialValueOfTime = cafe.time // the initial value is stored here. which is 300

@objc func runTimer() {

    if isTimerRunning {
        cafe.time -= 1
    } else {
        cafe.time = initialValueOfTime
    }
    labelCowntdownTimer.text = "\(cafe.time)"
    // MM:SS:_

    let flooredCounter = cafe.time

    let minute = (flooredCounter % 3600) / 60
    var minuteString = "\(minute)"
    if minute < 10 {
        minuteString = "0\(minute)"
    }

    let second = (flooredCounter % 3600) % 60
    var secondString  = "\(second)"
    if second < 10 {
        secondString = "0\(second)"
    }

    labelCowntdownTimer.text = "\(minuteString):\(secondString)"

}

//Mark: - resetTimer

@objc func resetTimer() {

    timer.invalidate()
    runTimer()
}


//Mark: - ButtonPressed - Start Timer

@IBAction func startButtonPressed(_ sender: Any) {

    if !isTimerRunning {
        isTimerRunning = true
        timer = Timer.scheduledTimer(timeInterval: 1.0, target: self, selector: #selector(runTimer), userInfo: nil, repeats: true)
        startButton.setTitle("Stop Brewing", for: .normal)
    } else {
        isTimerRunning = false
        resetTimer()
        startButton.setTitle("Star Brewing", for: .normal)

    }
}
© www.soinside.com 2019 - 2024. All rights reserved.