我UISwitch在tableviewcontroller中有一个,当切换开关时,我希望它更改在单元格相关的视图控制器内部创建的数组中的布尔变量的值。有点像IOS上的Stock Alarm App,其中每个单元都有一个UISwitch,并且拨动该开关将关闭每个单独的警报。因此,使用UISwitch,其选择器代码位于cellForRowAtIndexPath方法内部
UISwitch
cellForRowAtIndexPath
//switch let lightSwitch = UISwitch(frame: CGRectZero) as UISwitch lightSwitch.on = false lightSwitch.addTarget(self, action: #selector(switchTriggered), forControlEvents: .ValueChanged) //lightSwitch.addTarget(self, action: "switchTriggered", forControlEvents: .ValueChanged ) cell.accessoryView = lightSwitch
我希望它做到这一点
func switchTriggered(a: Int) { changeValueOfArray = array[indexPath.row] }
我还没有为那部分编写代码,但是我的问题是,如何让switchTriggered函数看到该indexPath.row值,而不将其作为参数传递给该函数,因为我不能因为它的选择器?
indexPath.row
let lightSwitch = UISwitch(frame: CGRectZero) as UISwitch lightSwitch.on = false lightSwitch.addTarget(self, action: #selector(switchTriggered), forControlEvents: .ValueChanged) lightSwitch.tag = indexpath.row cell.accessoryView = lightSwitch
让我们将布尔值保存在数组中
func switchTriggered(sender: UISwitch) { sender.on ? array[sender.tag]=1 : array[sender.tag]=0 } }