#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)
}
}