计时器未赢得呼叫选择器功能

时间:2016-11-19 16:02:23

标签: swift nstimer

我不确定为什么,但每次运行我的应用程序时,我的计时器都不会调用更新功能。我已经尝试了一切:使用#selector,在更新结束时添加冒号,没有任何工作。我在更新中添加了一个print语句,以确保它到达那里,并且print语句永远不会打印!我不确定为什么它不会被呼叫....帮助!附:我知道选择确实是if语句中的一个选项,我有一个打印声明,并且它正在工作。

 if (selected == "05 seconds") {
        count = 5
        timer = Timer(timeInterval: 1.0, target: self, selector: Selector("update"), userInfo: nil, repeats: true)

    }
    else if (selected == "10 seconds") {
        count = 10
        timer = Timer(timeInterval: 1.0, target: self, selector: Selector("update"), userInfo: nil, repeats: true)
    }
    else if (selected == "20 seconds") {
        count = 20
        timer = Timer(timeInterval: 1.0, target: self, selector: Selector("update"), userInfo: nil, repeats: true)
    }
    else if (selected == "30 seconds") {
        print("I'm here!")
        count = 30
        timer = Timer(timeInterval: 1.0, target: self, selector: Selector("update"), userInfo: nil, repeats: true)
    }
    else if (selected == "Single Shot") {
        SendButton.isHidden = false
        countDownLabel.isHidden = true
    }
}
   func update() {
    print("Now I'm in update!")
    count = count - 1;
    countDownLabel.text = String(count)
}

1 个答案:

答案 0 :(得分:6)

计时器不起作用,因为您使用的方法要求将计时器显式添加到runloop。

使用API​​将隐式计时器添加到runloop。

 timer = Timer.scheduledTimer(timeInterval: 1.0, target: self, selector: #selector(update), userInfo: nil, repeats: true)

PS:#selector语法更可取,因为它在编译时检查动作方法是否存在。