如果用户名和密码为nil,我试图显示“ 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)
}
答案 0 :(得分:0)
您正在展示,但同时又被解雇,这导致了问题。
删除此行
dismiss(animated: true, completion: nil)
希望有帮助
答案 1 :(得分:0)
您犯了多个错误。
假设您的文本字段为空,警报将显示,并且将执行其他代码行(不应这样做)。 因此,应该使用 return语句,以便当用户遇到错误时,永远不会执行不需要的代码。
,在最后一行中,您关闭了警报,该警报应该不存在。因此,您必须删除该行代码