这是我之前问过的一个问题的后续,但我觉得我错过了一些非常简单的东西,它把我逼上了墙!
我有一个自定义的tableview单元格,其中包含一个开关,每次更改函数的值时,我都需要触发一个函数。我试过使用.addTarget
但它似乎从未触发函数,因此可能我的选择器语法不正确。
我在tableview单元格中以编程方式创建开关,如下所示:
let thisSwitch: UISwitch = {
let thisSwitch = UISwitch()
thisSwitch.isOn = false
thisSwitch.translatesAutoresizingMaskIntoConstraints = false
thisSwitch.addTarget(self, action: Selector("switchTriggered:"), for: .valueChanged)
return thisSwitch
}()
在这下面我有自己的职责:
func switchTriggered(sender: AnyObject) {
print("SWITCH TRIGGERED")
let sentSwitch = sender as! UISwitch
privateExercise.switchState = sentSwitch.isOn
}
它显示一条错误消息,说明“没有用Objective-C选择器'switchtrigged:'声明方法”。我错过了什么?任何帮助都将不胜感激!
最佳答案
选择器语法应该是
thisSwitch.addTarget(self, action: #selector(switchTriggered), for: .valueChanged)
同时将参数保持为
UISwitch
类型本身,以避免强制转换函数func switchTriggered(sentSwitch: UISwitch) {
print("SWITCH TRIGGERED")
privateExercise.switchState = sentSwitch.isOn
}
关于ios - 将观察者添加到自定义tableview单元中的UISwitch,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42793062/