将观察者添加到自定义tableview单元格中的UISwitch

时间:2017-03-14 17:45:58

标签: ios swift

这是我之前提出的一个问题的后续问题,但我觉得我错过了一些非常简单的事情,它让我不得不把它推到墙上!

我有一个包含开关的自定义tableview单元格,我需要在每次更改值时触发一个函数。我已经尝试使用1.0/d,但它似乎永远不会触发函数,所以可能我的选择器语法不正确。 我在tableview单元格中以编程方式创建开关,如下所示:

.addTarget

然后在我的功能正下方:

let thisSwitch: UISwitch = {
    let thisSwitch = UISwitch()
    thisSwitch.isOn = false
    thisSwitch.translatesAutoresizingMaskIntoConstraints = false
    thisSwitch.addTarget(self, action: Selector("switchTriggered:"), for: .valueChanged)
    return thisSwitch

}()

它显示一条错误消息,指出“没有用Objective-C选择器声明的方法'switchTriggered:'”。我在这里错过了什么?任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:0)

选择器语法应为

thisSwitch.addTarget(self, action: #selector(switchTriggered), for: .valueChanged)

同时将参数保持为UISwitch类型本身,以避免在函数中强制转换

func switchTriggered(sentSwitch: UISwitch) {
    print("SWITCH TRIGGERED")
    privateExercise.switchState = sentSwitch.isOn
}