一尘不染

在tableviewcell的附件视图中的UISwitch,通过选择器传递参数以具有选择器功能,请参见indexpath.row?

swift

UISwitch在tableviewcontroller中有一个,当切换开关时,我希望它更改在单元格相关的视图控制器内部创建的数组中的布尔变量的值。有点像IOS上的Stock
Alarm
App,其中每个单元都有一个UISwitch,并且拨动该开关将关闭每个单独的警报。因此,使用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值,而不将其作为参数传递给该函数,因为我不能因为它的选择器?


阅读 246

收藏
2020-07-07

共1个答案

一尘不染

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
     }
}
2020-07-07