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

Код:

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.
}

}

0
beans217 23 Окт 2018 в 10:51

2 ответа

Лучший ответ

Сначала измените синтаксис 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)
}
1
Sharad Chauhan 23 Окт 2018 в 08:55

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

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

И остановитесь на:

func viewDidDisappear() {
      super.viewDidDisappear()
        self.timer?.invalidate()
        self.timer = nil
}
1
Vitaliy Rusinov 23 Окт 2018 в 07:59
52943830