Правильное решение - переместить действие в класс вашей ячейки:
class MyCell: UITableViewCell {
@IBOutlet weak var switchSelection: UISwitch!
override func awakeFromNib() {
super.awakeFromNib()
switchSelection.addTarget(self, action: #selector(MyCell.action(_:)), for: .valueChanged)
}
func configure(switchAction: @escaping (Bool) -> Void) {
self.switchAction = switchAction
}
@objc func action(_ sender: UISwitch) {
switchAction(sender.isOn)
}
private var switchAction: (Bool) -> Void = { _ in }
}
Теперь в вашем делегате табличного представления вы можете просто сделать это:
let pidName = "someString"
cell.configure(switchAction: { [weak self] isOn in
let store = isOn
let settingTag = pid
}
или вы можетеделать:
let pidName = "someString"
cell.configure(switchAction: { [weak self] isOn in
self?.switchOperation(isOn: isOn, pid: pid)
}
@objc func switchOperation(isOn: Bool, pid: Any){
let store = isOn
let settingTag = pid
}