这是我之前问过的一个问题的后续,但我觉得我错过了一些非常简单的东西,它把我逼上了墙!
我有一个自定义的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/

10-12 07:25