iOS - ошибки проверки Eureka отображаются при сбросе формы - PullRequest
0 голосов
/ 26 августа 2018

Я получаю сообщение о подтверждении ошибки. Это появляется, когда я нажимаю кнопку сброса формы. Я думаю, это из-за .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)
                    }
                }
            }

1 Ответ

0 голосов
/ 28 августа 2018

Когда вы добавляете RuleRequired в строку, после установки в строке значения nil и из-за опции .ValidatesOnChange вы получаете ошибку проверки. Вы можете сделать это:

@IBAction func resetButtonPressed(_ sender: UIBarButtonItem) {
    form.removeAll()
    createForm()
}
...