Итак, у меня есть программа, которая является секундомером, и у меня работает секундомер, но когда я нажимаю кнопку паузы, вещь останавливается, но когда я снова нажимаю кнопку запуска, чтобы запустить секундомер с того места, где он остановился, он сбрасывается вместо этого.Я пробовал несколько вещей, но ничего не получается, вы можете мне помочь.ниже приведен мой код для функции сброса, запуска и паузы. Все они - IBactions и Outlets.
Я думаю, что проблема с кнопками запуска или паузы
@IBOutlet weak var startButton: UIButton!
@IBOutlet weak var pauseButton: UIButton!
@IBAction func startTimer(_ sender: AnyObject) {
if(isPlaying) {
return
}
startButton.isEnabled = false
pauseButton.isEnabled = true
isPlaying = true
let aSelector : Selector = #selector(ViewController.updateTime)
timer = Timer.scheduledTimer(timeInterval: 0.01, target: self, selector: aSelector, userInfo: nil, repeats: true)
counter = NSDate.timeIntervalSinceReferenceDate
}
@IBAction func pauseTimer(_ sender: AnyObject) {
startButton.isEnabled = true
pauseButton.isEnabled = false
timer.invalidate()
isPlaying = false
}
@IBAction func resetTimer(_ sender: AnyObject) {
startButton.isEnabled = true
pauseButton.isEnabled = false
timer.invalidate()
isPlaying = false
counter = 0.0
timeLabel.text = String("00:00:00:00")
}
, затем яТакже есть моя часть Updatetimer, которая, я уверен, работает нормально, но если вам нужно, просто спросите !!
Если вам нужна дополнительная информация или спецификации, просто спросите или оставьте комментарий.
вот мой таймер обновления
@ objc func updateTime () {let currentTime = NSDate.timeIntervalSinceReferenceDate
//Find the difference between current time and start time.
var elapsedTime: TimeInterval = currentTime - counter
//calculates the hour in elapsed time
let hours = UInt8(elapsedTime / 3600.0)
elapsedTime -= (TimeInterval(hours) * 3600.0)
//calculate the minutes in elapsed time.
let minutes = UInt8(elapsedTime / 60.0)
elapsedTime -= (TimeInterval(minutes) * 60)
//calculate the seconds in elapsed time.
let seconds = UInt8(elapsedTime)
elapsedTime -= TimeInterval(seconds)
//find out the fraction of milliseconds to be displayed.
let fraction = UInt8(elapsedTime * 100)
//add the leading zero for minutes, seconds and millseconds and store them as string constants
let strHours = String(format: "%02d", hours)
let strMinutes = String(format: "%02d", minutes)
let strSeconds = String(format: "%02d", seconds)
let strFraction = String(format: "%02d", fraction)
//concatenate minuets, seconds and milliseconds as assign it to the UILabel
timeLabel.text = "\(strHours):\(strMinutes):\(strSeconds):\(strFraction)"
}