Swiftでアカウントの新規登録画面を作成しています。
パスワード入力欄と再入力欄のパスワードが違うときにボタンを無効にしたいです。
現在のコードではボタンが押せる状態です。printもされていません。
Breakpointも設置してみたのですが、使い方が違うのか、上手く原因がわかりませんでした。
どこが原因なのでしょうか?
Swift
1class RegisterViewController: UIViewController, UITextFieldDelegate { 2 3// 登録ボタン 4 @IBOutlet weak var Button: UIButton! 5 @IBOutlet weak var newname: UITextField! 6 @IBOutlet weak var newmail: UITextField! 7 @IBOutlet weak var newpass: UITextField! 8 @IBOutlet weak var newpass2: UITextField! 9 10 @IBAction func back_button(_ sender: Any) { 11 self.navigationController?.popViewController(animated: true) 12 } 13 14 // 登録ボタン 15 @IBAction func register(_ sender: Any) { 16 17 // https://teachapi.herokuapp.com/sign_up 18 let config: URLSessionConfiguration = URLSessionConfiguration.default 19 20 let session: URLSession = URLSession(configuration: config) 21 22 var urlComponents = URLComponents() 23 urlComponents.scheme = "https" 24 urlComponents.host = "teachapi.herokuapp.com" 25 urlComponents.path = "/sign_up" 26 27 28 let url: URL = urlComponents.url! 29 var req: URLRequest = URLRequest(url: url) 30 req.httpMethod = "POST" 31 req.addValue("application/json", forHTTPHeaderField: "Content-Type") 32 let params:[String:Any] = [ 33 "sign_up_user_params": [ 34 "name": "(newname.text!)", 35 "bio": "a", 36 "email": "(newmail.text!)", 37 "password": "(newpass.text!)", 38 "password_confirmation": "(newpass2.text!)" 39 ] 40 ] 41 func textFieldDidEndEditing(_ textField: UITextField) { 42 if newpass.text == newpass2.text { 43 do{ 44 req.httpBody = try JSONSerialization.data(withJSONObject: params, options: []) 45 }catch{ 46 print(error.localizedDescription) 47 } 48 49 print(req) 50 let task = session.dataTask(with: req) { (data, response, error) in 51 52 do { 53 let json: [String: Any] = try JSONSerialization.jsonObject(with: data!, options: []) as! [String: Any] 54 UserDefaults.standard.set(json["token"], forKey: "token") 55 UserDefaults.standard.synchronize() 56 57 } catch { 58 59 } 60 61 } 62 task.resume() 63 } else { 64 print("パスワードが違います") 65 Button.isEnabled = true 66 } 67 }
回答3件
あなたの回答
tips
プレビュー