![](/img/trans.png)
[英]How do I start an NSTimer from my app delegate which calls my method in Viewcontroller.m
[英]Swift: How to start NSTimer once ViewController is opened
我的故事板是这样的:MainNavViewController - > TimerViewController
TimeViewController包含NSTimer和管理它的代码。
一旦TimerViewController打开,NSTimer应自动开始倒计时。
计时器应从02:00到00:00倒计时。
仅在所述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
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.