我的 Storyboard是这样的: MainNavViewController --> TimerViewController
TimeViewController 包含 NSTimer 和管理它的代码。
一旦 TimerViewController 打开,NSTimer 应该自动开始倒计时。
计时器应该从 02:00 分钟倒计时到 00:00。
计时器仅在上述ViewController中需要,在下一个或之前的ViewController中不需要。
目前,我有以下代码:
var timer = NSTimer()
let timeInterval:NSTimeInterval = 0.05
let timerEnd:NSTimeInterval = 0.0
var timeCount:NSTimeInterval = 120.0
func timerDidEnd(timer:NSTimer){
timeCount = timeCount - timeInterval
if timeCount <= 0 {
TimerLabel.text = "Time's Up!"
timer.invalidate()
}
}
func timeString(time:NSTimeInterval) -> String {
let minutes = Int(time) / 60
let seconds = time - Double(minutes) * 60
return String(format:"%02i:%02i",minutes,Int(seconds))
}
func StartTimer() { // Function called in viewDidLoad
if !timer.valid{
TimerLabel.text = timeString(timeCount)
timer = NSTimer.scheduledTimerWithTimeInterval(timeInterval,
target: self,
selector: "timerDidEnd:",
userInfo: nil,
repeats: true)
}
}
但是,该代码将不起作用,并且 timerLabel 仅设置为 02:00 而未运行(倒计时)。
最佳答案
每次调用定时器函数时你忘记设置文本
func timerDidEnd(timer:NSTimer){
timeCount = timeCount - timeInterval
if timeCount <= 0 {
TimerLabel.text = "Time's Up!"
timer.invalidate()
// Start edit
} else {
TimerLabel.text = timeString(timeCount)
}
// End edit
}
关于ios - Swift:打开 ViewController 后如何启动 NSTimer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34889389/