reuse fixes

This commit is contained in:
Suresh, Kamlesh 2020-04-08 22:33:14 -04:00
parent d66da2d2b8
commit 03438a1165

View File

@ -13,46 +13,50 @@ import UIKit
public var fieldKey: String?
public var groupName: String = FormValidator.defaultGroupName
private var selectedRadioButton: RadioButton?
private var fieldGroupName: String?
private var selectedRadioButtonModel: RadioButtonModel?
public var baseValue: AnyHashable?
init(_ radioButtonModel: RadioButtonModel?) {
self.fieldKey = radioButtonModel?.fieldKey
if radioButtonModel?.state ?? false {
self.baseValue = radioButtonModel?.formFieldValue()
public func set(_ radioButtonModel: RadioButtonModel, _ radioButton: RadioButton) {
self.fieldKey = radioButtonModel.fieldKey
if radioButtonModel.state {
if self.baseValue == nil {
self.baseValue = radioButtonModel.fieldValue
}
selectedRadioButtonModel = radioButtonModel
// Below code is needed for cell resuse scenario.
radioButton.isSelected = true
selectedRadioButton = radioButton
} else {
radioButton.isSelected = false
}
}
public static func setupForRadioButtonGroup(_ radioButtonModel: RadioButtonModel, _ radioButton: RadioButton, delegateObject: MVMCoreUIDelegateObject?) {
guard let groupName = radioButtonModel.fieldKey,
let formValidator = delegateObject?.formHolderDelegate?.formValidator else {
return
let formValidator = delegateObject?.formHolderDelegate?.formValidator else {
return
}
let radioButtonSelectionHelper = formValidator.radioButtonsModelByGroup[groupName] ?? RadioButtonSelectionHelper(radioButtonModel)
radioButtonSelectionHelper.fieldGroupName = radioButtonModel.fieldKey
formValidator.radioButtonsModelByGroup[groupName] = radioButtonSelectionHelper
if radioButtonModel.state {
radioButtonSelectionHelper.selectedRadioButton = radioButton
}
let radioButtonSelectionHelper = formValidator.radioButtonsModelByGroup[groupName] ?? RadioButtonSelectionHelper()
radioButtonSelectionHelper.set(radioButtonModel, radioButton)
formValidator.radioButtonsModelByGroup[groupName] = radioButtonSelectionHelper
FormValidator.setupValidation(for: radioButtonSelectionHelper, delegate: delegateObject?.formHolderDelegate)
}
public func selected(_ radioButton: RadioButton) {
selectedRadioButton?.isSelected = false
selectedRadioButtonModel?.state = false
selectedRadioButton = radioButton
selectedRadioButton?.isSelected = true
selectedRadioButtonModel = selectedRadioButton?.radioModel
}
}
// MARK: - FormValidationFormFieldProtocol
extension RadioButtonSelectionHelper {
public func formFieldGroupName() -> String? {
return selectedRadioButton?.formFieldGroupName() ?? self.fieldGroupName
}
extension RadioButtonSelectionHelper {
public func formFieldValue() -> AnyHashable? {
return selectedRadioButton?.formFieldValue()
return selectedRadioButtonModel?.fieldValue
}
}