Таймер автоматического запуска - PullRequest
0 голосов
/ 23 октября 2018

Я пытаюсь сделать очень простой таймер обратного отсчета, который отображается на экране без необходимости нажимать кнопку запуска;непрерывный.Однако, когда я запускаю симулятор, на экране отображается только «Метка» без обратного отсчета.Я правильно подключил свои розетки и не выдаю ошибок, и даже следуя инструкциям, я не могу понять, что я делаю неправильно.Какие-нибудь простые решения?

Код:

class ViewController: UIViewController {


@IBOutlet weak var timerLabel: UILabel!


var seconds = 15
var timer = Timer()


func runTimer() {
    timer = Timer.scheduledTimer(timeInterval: 1, target: self, selector: Selector(("updateTimer")),userInfo: nil, repeats: true)
}

func updateTimer() {
    seconds -= 1
    timerLabel.text = String(seconds)
}






override func viewDidLoad() {
    super.viewDidLoad()
    runTimer()
    // Do any additional setup after loading the view, typically from a nib.
}

}

Ответы [ 2 ]

0 голосов
/ 23 октября 2018

Сначала измените синтаксис selector в этой строке:

func runTimer() {
    timer = Timer.scheduledTimer(timeInterval: 1, target: self, selector: #selector(updateTimer),userInfo: nil, repeats: true)
}

и добавьте @objc к этой функции:

@objc func updateTimer() {
    seconds -= 1
    timerLabel.text = String(seconds)
}
0 голосов
/ 23 октября 2018

Просто запустите таймер на:

func viewDidAppear() {
    super.viewDidAppear()
    self.runTimer()
}

и остановите его на:

func viewDidDisappear() {
      super.viewDidDisappear()
        self.timer?.invalidate()
        self.timer = nil
}
...