Как проверить одно и то же условие в textField и textView одновременно? - PullRequest
0 голосов
/ 06 июня 2019

У меня есть 2 textFields и 1 textView, все эти поля имеют контент, взятый из previousViewController, мне нужно включить или отключить rightBarButtonItem в соответствии с изменениями пользователя в этих полях, если новый контент отличается от текущего контента , который исходит от previousViewController. Как проверить textFields и textView одновременно? Теперь у меня (условия иногда противоречат друг другу)

в viewDidLoad:

loginTextField.addTarget(self, action: #selector(textFieldDidChange(_:)), for: .editingChanged)

displayNameTextField.addTarget(self, action: #selector(textFieldDidChange(_:)), for: .editingChanged)

, то:

@objc func textFieldDidChange(_ textField: UITextField) {

    if displayNameTextField.text != currentDisplayName || loginTextField.text != currentUsername {
        self.navigationItem.rightBarButtonItem?.isEnabled = true
    } else {
        self.navigationItem.rightBarButtonItem?.isEnabled = false
    }

}

func textViewDidChangeSelection(_ textView: UITextView) {
    if aboutTextView.text == currentAbout {
        self.navigationItem.rightBarButtonItem?.isEnabled = false
    } else {
        self.navigationItem.rightBarButtonItem?.isEnabled = true
    }
}

1 Ответ

1 голос
/ 06 июня 2019

Почему бы не извлечь его из функции и проверить это там так:

@objc func textFieldDidChange(_ textField: UITextField) {
    validateFields()
}

func textViewDidChangeSelection(_ textView: UITextView) {
    validateFields()
}

func validateFields() {
    if aboutTextView.text == currentAbout || displayNameTextField.text == currentDisplayName || loginTextField.text == currentUsername {
        self.navigationItem.rightBarButtonItem?.isEnabled = false
    } else {
        self.navigationItem.rightBarButtonItem?.isEnabled = true
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...