Я получаю сообщение о подтверждении ошибки. Это появляется, когда я нажимаю кнопку сброса формы. Я думаю, это из-за .validatesOnChange
Однако я не хочу забирать это, потому что сама проверка работает правильно, когда я пытаюсь отправить свою форму. Сообщение появляется, если ничего не введено, и если пользователь что-то вводит, сообщение исчезает.
Как мне сохранить функцию проверки, не вызывая ее при сбросе формы? Есть ли лучший способ восстановить мою форму? Или лучший способ заставить мое сообщение проверки появляться и исчезать?
@IBAction func resetButtonPressed(_ sender: UIBarButtonItem) {
form.setValues(["bmi": nil])
tableView.reloadData()
}
func createForm(){
LabelRow.defaultCellUpdate = { cell, row in
cell.contentView.backgroundColor = .red
cell.textLabel?.textColor = .white
cell.textLabel?.font = UIFont.boldSystemFont(ofSize: 13)
cell.textLabel?.textAlignment = .right
}
form +++ Section("Demographics")
<<< DecimalRow("bmi") {
$0.title = "BMI"
$0.placeholder = "40"
$0.useFormatterDuringInput = true
$0.add(rule: RuleRequired())
$0.validationOptions = .validatesOnChange
}
.onRowValidationChanged { cell, row in
let rowIndex = row.indexPath!.row
while row.section!.count > rowIndex + 1 && row.section?[rowIndex + 1] is LabelRow {
row.section?.remove(at: rowIndex + 1)
}
if !row.isValid {
for (index, validationMsg) in row.validationErrors.map({ $0.msg }).enumerated() {
let labelRow = LabelRow() {
$0.title = validationMsg
$0.cell.height = { 30 }
}
row.section?.insert(labelRow, at: row.indexPath!.row + index + 1)
}
}
}