Ошибка в заявлении Swift If - PullRequest
0 голосов
/ 15 мая 2019

Я установил 4 UITextFields и одну UIButton.Это работает как страница регистрации, где пользователь предоставляет такие данные, как имя пользователя, электронная почта, пароль и т. Д. Таким образом, только и только там, где все поля UItextFl не пусты, кнопка регистрации будет включена, чтобы пользователь мог нажать внутри и перейти к следующемуUIView.Все работает нормально, но я замечаю небольшую ошибку, которая проникает в мой последний нерв XD.

Если пользователь заполняет все поля UItextF всей необходимой информацией, но по какой-то причине возвращается в одно из них, пока поле не станетпусто, а затем нажмите на кнопку регистрации. Регистрация будет успешной, даже если там было пустое поле.Пожалуйста, я почти неделю пытался выяснить это.

То, как я настроил UIbotton:

private let registerButton : UIButton = {
    let button = UIButton(type: .system)
    button.translatesAutoresizingMaskIntoConstraints = false
    button.setTitle("Registrar", for: .normal)
    button.backgroundColor = UIColor.blue
    button.layer.cornerRadius = 5
    button.titleLabel?.font = UIFont.boldSystemFont(ofSize: 14)
    button.setTitleColor(.black, for: .normal)
    button.addTarget(self, action: #selector(handleSignUp), for: .touchUpInside)
    button.isEnabled = true
    return button
}()

Код блока, отвечающий за проверку, если все поля уже используютсязаполнено пользователем.

@objc private func handleSignUp () {
    let userName = userNameTexField.text
    let email = emailTextField.text
    let password = passwordTextField.text
    let confirmPassword = confirmPasswordField.text
    let birthDate = birthDateTextField.text

    if userName?.isEmpty ?? true && email?.isEmpty ?? true && password?.isEmpty ?? true && confirmPassword?.isEmpty ?? true && birthDate?.isEmpty ?? true {
        let alert = UIAlertController(title: nil, message: "Youmust fill all the fields with all the required infotmation to signup", preferredStyle: .alert)
        let okAction = UIAlertAction(title: "OK", style: .cancel, handler: nil)
        alert.addAction(okAction)
        present(alert, animated: true, completion: nil)
    }else {
        emailTextField.isUserInteractionEnabled = false
        passwordTextField.isUserInteractionEnabled = false
        confirmPasswordField.isUserInteractionEnabled = false
        birthDateTextField.isUserInteractionEnabled = false
        performSegue(withIdentifier: "goToHome", sender: nil)
        print("LogIn succesful!")
        print (userAge)
    }
}

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

Ответы [ 3 ]

3 голосов
/ 15 мая 2019

Вы требуете, чтобы все поля были пустыми, чтобы вызвать ваше оповещение. Вам нужно знать, что один из них пуст. Попробуйте изменить && на ||.

if userName?.isEmpty ?? true || email?.isEmpty ?? true || password?.isEmpty ?? true || confirmPassword?.isEmpty ?? true || birthDate?.isEmpty ?? true
1 голос
/ 15 мая 2019

Вам нужно использовать оператор или вместо и потому что у вас есть проверка для любого пустого текстового поля:

@objc private func handleSignUp () {

    if textField1.text!.isEmpty || textField2.text!.isEmpty || textField3.text!.isEmpty || textField4.text!.isEmpty || textField5.text!.isEmpty {
        let alert = UIAlertController(title: nil, message: "Youmust fill all the fields with all the required infotmation to signup", preferredStyle: .alert)
        let okAction = UIAlertAction(title: "OK", style: .cancel, handler: nil)
        alert.addAction(okAction)
        present(alert, animated: true, completion: nil)
    }else {
        textField2.isUserInteractionEnabled = false
        textField3.isUserInteractionEnabled = false
        textField4.isUserInteractionEnabled = false
        textField5.isUserInteractionEnabled = false
        performSegue(withIdentifier: "goToHome", sender: nil)
        print("LogIn succesful!")
        print ("userAge")

    }
}
1 голос
/ 15 мая 2019

Вы должны использовать || в вашем if вместо &&, потому что вы хотите показывать предупреждение, когда хотя бы одно из этих полей пусто

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...