xmartlabs / Eureka

Elegant iOS form builder in Swift
https://eurekacommunity.github.io
MIT License
11.78k stars 1.33k forks source link

SwitchRow Not responding to second time from user interaction #2241

Open amrangry opened 1 year ago

amrangry commented 1 year ago

Describe the bug SwitchRow Not responding to second time from user interaction

To Reproduce Steps to reproduce the behavior:

  1. change switch value by clicking, code in the onChange function will be executed
  2. See error: code in the onChange function will not be executed when you change again switch value by clicking,

Expected behavior execute the code statement in onChange function each time value change of the switch

Screenshots

            SwitchRow(InteractionFormFieldsIds.followupCompletedShortcut.value) {
                $0.title = "Follow Up Completed"
            }.onChange({ row in
                if let switchValue = row.cell.switchControl?.isOn {
                    if switchValue == true {
                        row.cell.switchControl.setOn(false, animated: true)

                            DispatchQueue.main.async {
                                self.tableView.reloadData { /* Complete reloading */ }
                            }
                        }
                    } 
                } 
            })

Versions (please complete the following information):

mats-claassen commented 1 year ago

Hi @amrangry you can try one of the examples and see that SwitchRow works correctly and onChange is called each time the user taps the switch. Even with your code it works for me.

However why are you changing the switch value from inside onChange? Also, you probably want to build on row.value instead of row.cell.switchControl?.isOn