Я пытаюсь добавить действие изменения состояния переключателя для каждой ячейки таблицы в моем табличном представлении. Проблема в том, что при первом запуске приложения действие состояния вызывается для каждой созданной ячейки.
Имеется пример, когда у меня изначально есть 5 элементов в базе данных, при первой загрузке таблицы просмотра переключатель будет вызываться 5 раз.
Мне нужна функция действия вне привязки, которая будет вызываться ТОЛЬКО , когда пользователь нажал на переключатель.
Вот код для ячейки табличного представления:
class SensorCell: UITableViewCell {
@IBOutlet weak var txtIndex: UILabel!
@IBOutlet weak var txtSensorItem: UILabel!
@IBOutlet weak var sensorSwitch: UISwitch!
var cellBag = DisposeBag()
override func awakeFromNib() {
super.awakeFromNib()
}
func configure(withViewModel viewModel: SensorItemPresentable) -> (Void) {
txtIndex.text = viewModel.id!
txtSensorItem.text = viewModel.textValue!
sensorSwitch.isOn = viewModel.status!
}
}
Вот код, когда я делаю привязку просмотра таблицы:
override func viewDidLoad() {
super.viewDidLoad()
let nib = UINib(nibName: "SensorCell", bundle: nil)
tableViewItems.register(nib, forCellReuseIdentifier: identifier)
viewModel = SensorViewModel()
self.viewModel?.items.asObservable().bind(to: self.tableViewItems.rx.items(cellIdentifier: identifier, cellType: SensorCell.self)) { index, item, cell in
cell.sensorSwitch.rx.isOn
.subscribe({ status in
//on first time loading the view, if my database has 5 items it will run this 5 times
print("cell switch set to: \(status)")
})
.disposed(by: cell.cellBag)
cell.configure(withViewModel: item)
}.disposed(by: bag)
}