UIAlert увольняется сразу после представления.стриж - PullRequest
0 голосов
/ 07 октября 2018

Я пытаюсь представить "UIAlert", если имя пользователя и пароль равны нулю.Когда я нажимаю кнопку регистрации, не заполняя детали, отображается предупреждение.Это хорошо.Но Alert увольняется сразу после представления.Это не позволяет мне нажимать на ОК.Вот мой код.любая помощь приветствуется.

import UIKit

class RegisterViewController: UIViewController {

    @IBOutlet weak var newUserNameField: UITextField!
    @IBOutlet weak var newPasswordField: UITextField!
    let defaults = UserDefaults.standard
    var registeredUsers = [String]()
    var passwordArr = [String]()

    override func viewDidLoad() {
        super.viewDidLoad()
    }

    @IBAction func registerButtonPressed(_ sender: Any) {
        if (newUserNameField.text == "") && (newPasswordField.text == "")  {
            let alert = UIAlertController(title: "Oops", message: "All fields must not be left blank when proceeding!", preferredStyle: .alert)
            alert.addAction(UIAlertAction(title: "OK", style: .default, handler: nil))
            self.present(alert, animated: true, completion: nil)
        }

        if defaults.object(forKey: "usernames") != nil {
            registeredUsers = defaults.array(forKey: "usernames") as! [String]
            passwordArr = defaults.array(forKey: "passwords") as! [String]
        }

    // create a new account
        registeredUsers.insert(newUserNameField.text!, at: registeredUsers.count)
        passwordArr.insert(newPasswordField.text!, at: passwordArr.count)
        defaults.set(registeredUsers, forKey: "usernames")
        defaults.set(passwordArr, forKey: "passwords")
        dismiss(animated: true, completion: nil)
    }

Ответы [ 2 ]

0 голосов
/ 07 октября 2018

Вы допустили несколько ошибок.

  • предположим, что ваши текстовые поля пусты, появится предупреждение и будет выполнена другая строка кода, чего НЕ должно быть.Поэтому вы должны использовать оператор возврата , чтобы при получении ошибки пользователь не выполнял требуемый код.

  • , а в последней строке отклонить предупреждение , которого не должно быть .Таким образом, вы должны удалить эту строку кода

0 голосов
/ 07 октября 2018

Вы представляете и одновременно отклоняете, что приводит к проблеме.

Удалите эту строку

dismiss(animated: true, completion: nil)

Надеюсь, это поможет

...