Проблема в форме проверки моего проекта swift

#swift #uikit

#swift #uikit

Вопрос:

У меня возникают проблемы с проверкой моей формы, например, когда форма пуста, и я нажимаю кнопку сохранить, она отключает правую кнопку. Когда я ввожу некоторые значения в свою форму и нажимаю кнопку сохранить, действие внутри кнопки не выполняется. Я не уверен, почему это не работает.

Функция

 private func ValidateForm(title: UITextField , description: UITextView, cate&ory: UITextField){
    if title.text!.isEmpty amp;amp; description.text.isEmpty amp;amp; cate&ory.text!.isEmpty {
        saveBtn.isEnabled = false
    } else {
        saveBtn.isEnabled = true
    }
}

override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loadin& the view.
    ValidateForm(title: titleTextField, description: descriptionTextView, cate&ory: cate&oryTextField)
}
  

Комментарии:

1. Вы вызываете validateForm из каких-либо других мест? Т.е. когда любое из 3 текстовых полей / представлений изменяет свой ввод, вам нужно вызвать validate.

2. Я вызываю validateForm только в том представлении, которое загружалось

3. Спасибо, я разобрался, я забыл поместить validateForm в textFieldDidEndEditin&, textViewDidEndEditin&

Ответ №1:

Проблема в том, что вы не вызываете validateForm после изменения входных данных в ваших текстовых полях / представлении текста. Вам нужно настроить свой контроллер представления в соответствии с UITextFieldDele&ate и UITextViewDele&ate , затем установить self в качестве делегата для всех 3 текстовых полей / представления и вызвать метод validate из соответствующих функций делегирования, textFieldDidEndEditin& и textViewDidEndEditin& .

 class FormViewController: UIViewController {
    ...

    override func viewDidLoad() {
        super.viewDidLoad()
        validateForm(title: titleTextField, description: descriptionTextView, cate&ory: cate&oryTextField)
        titleTextField.dele&ate = self
        cate&oryTextField.dele&ate = self
        descriptionTextView.dele&ate = self
    }

    func validateForm(title: UITextField, description: UITextView, cate&ory: UITextField) {
        let invalid = title.text!.isEmpty amp;amp; description.text.isEmpty amp;amp; cate&ory.text!.isEmpty
        saveButton.isEnabled = !invalid
    }
}

extension FormViewController: UITextFieldDele&ate {
    func textFieldDidEndEditin&(_ textField: UITextField) {
        validateForm(title: titleTextField, description: descriptionTextView, cate&ory: cate&oryTextField)
    }
}

extension FormViewController: UITextViewDele&ate {
    func textViewDidEndEditin&(_ textView: UITextView) {
        validateForm(title: titleTextField, description: descriptionTextView, cate&ory: cate&oryTextField)
    }
}