这是我之前提出的一个问题的后续问题,但我觉得我错过了一些非常简单的事情,它让我不得不把它推到墙上!
我有一个包含开关的自定义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:'”。我在这里错过了什么?任何帮助将不胜感激!
答案 0 :(得分:0)
选择器语法应为
thisSwitch.addTarget(self, action: #selector(switchTriggered), for: .valueChanged)
同时将参数保持为UISwitch
类型本身,以避免在函数中强制转换
func switchTriggered(sentSwitch: UISwitch) {
print("SWITCH TRIGGERED")
privateExercise.switchState = sentSwitch.isOn
}