In iOS using WIPER Architecture and I am trying to provide an Appearance to TextFormField named updateMemoField.
Already there was to TextFormFields as below:
@IBOutlet weak var brandValue: BorderedTextField?
@IBOutlet weak var allocationValue: BorderedTextField?
then calling setViewAppearance(appearance: display)
override func awakeFromNib() {
super.awakeFromNib()
do {
appearanceProvider = try DependencyContainer.shared.resolve() as BMLineItemAppearanceProvider
} catch {
log.error("Could not load BMLineItemAppearanceProvider class")
}
appearance = appearanceProvider?.bmLineItemAppearance
if let display = appearance {
setViewAppearance(appearance: display)
}
}
you can check method below:
private func setViewAppearance(appearance: BMLineItemAppearance) {
setAllFields(appearance: appearance)
...
}
setAllFields method is as below:
private func setAllFields(appearance: BMLineItemAppearance) {
let fields = [brandValue: localizedKey(key: "select"),
allocationValue: localizedKey(key: "select")]
for item in fields {
item.key?.configureAppearance(appearance.textAppearance, fieldAppearanceType: .formText)
item.key?.borderedEdges = BorderedEdge.all
item.key?.placeholder = item.value
item.key?.tintColor = .clear
item.key?.delegate = self
item.key?.dropdownButton(completionHandler: {
self.onClickDropDownFields(field: item.key!)
})
}
}
This is working fine. But, Now I need to add one more TextFormField (BorderedTextField) in my UI so simply I declared variable as below:
@IBOutlet weak var updateMemoField: BorderedTextField?
and Tried to provide appearance to it as below by creating a method:
private func setUpdateMemoFieldsAppearance(appearance: BMLineItemAppearance) {
guard let updateMemoField = updateMemoField else {
print("updateMemoField is nil, skipping configuration.")
return
}
updateMemoField.tintColor = .blue
updateMemoField.configureAppearance(appearance.textAppearance, fieldAppearanceType: .formText)
updateMemoField.returnKeyType = .default
updateMemoField.autocorrectionType = .no
updateMemoField.borderedEdges = BorderedEdge.all
updateMemoField.delegate = self
}
Calling this method inside setAllFields
as below:
private func setAllFields(appearance: BMLineItemAppearance) {
let fields = [brandValue: localizedKey(key: "select"),
allocationValue: localizedKey(key: "select")]
for item in fields {
item.key?.configureAppearance(appearance.textAppearance, fieldAppearanceType: .formText)
item.key?.borderedEdges = BorderedEdge.all
item.key?.placeholder = item.value
item.key?.tintColor = .clear
item.key?.delegate = self
item.key?.dropdownButton(completionHandler: {
self.onClickDropDownFields(field: item.key!)
})
}
setUpdateMemoFieldsAppearance(appearance:appearance)
}
and runtime am getting error as :
Thread 1: EXC_BAD_INSTRUCTION (code=1, subcode=0x0)
What might be the issue?