Моя раскадровка выглядит следующим образом: MainNavViewController -> TimerViewControllerSwift: Как начать NSTimer раз ViewController открыт
TimeViewController содержит NSTimer и код, который управляет его.
NSTimer должен АВТОМАТИЧЕСКИ начать обратный отсчет после открытия TimerViewController.
Таймер должен отсчет времени с 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 БЕЗ бега (отсчет).
Возможный дубликат [Swift: NSTimer автоматически заканчивается без отсчитывать] (http://stackoverflow.com/questions/34867661/swift -nstimer-automatic-ends-without-counting-down) – Jonah
Похоже, вы боретесь с несколькими проблемами сразу же здесь по нескольким вопросам. Я думаю, тебе будет больше удачи, если ты займешься за один раз. Знаете ли вы, что эта реализация таймера работает, можете ли вы подсчитать ее в ответ на нажатие кнопки, как в следующем примере? Если это так, то для запуска поведения, когда появляется представление 'UIViewController', посмотрите на метод' -viewDidAppear: 'на' UIViewController' и как вы можете его переопределить. – Jonah
Да, я также разместил этот вопрос. Однако на него не ответил. – mjoe7