入力したユーザー名とパスワードが正しいかどうかを確認してからsegue to Home画面を実行しようとしていますが、正しくない場合は警告メッセージを表示しようとしています。私はそれらのいずれかを成功させていません。ログインボタンをクリックするとすぐに、白い画面が表示されます。以下 は私のコードです:Swift3とXcode8:機能の実行後にセグを実行できません
@IBAction func didClickLogin(_ sender: Any) {
self.progressIndicator.isHidden = false
self.progressIndicator.startAnimating()
let enteredUserName = mMobileNumber.text
let enteredPassword = mPassword.text
//performing validation for username and password
didUserLogin(username: enteredUserName!, password: enteredPassword!)
return true
}
マイdidLogin機能:以下の方法でセグエ実行
func didUserLogin(username: String, password: String) {
let requestString = Constants.BASE_URL+"/mlogin"
let parameters: Parameters = ["username":username, "password":password]
let headers = ["Authorization": "Basic \(Constants.base64LoginString)"]
Alamofire.request(requestString, method:.post, parameters: parameters, encoding: URLEncoding.default, headers: headers).responseJSON { response in
//to get status code
switch response.result {
case .success(let data):
let json = JSON(data)
switch (json["status"].stringValue){
case "200":
DispatchQueue.main.async {
self.performSegue(withIdentifier: "loginSuccess", sender: self)
}
break
case "401":
self.progressIndicator.isHidden = true
self.progressIndicator.stopAnimating()
let alert = Constants()
alert.showAlert(fromController: self, alertMessage: "Entered username or password is incorrect")
break
case .failure(let error):
print("Request failed with error: \(error)")
}
}
}
}
を私がやっている何を間違えお知らせください、私は何を教えてください変更を行う必要があります。私は警告メッセージを表示するためにベールではありません。私はあなただけの次のメソッドを実装する必要があると思うし、それが正常に動作する必要があり
Warning: Attempt to present <UIAlertController: on whose view is not in the window hierarchy!
あなたは 'shoulcPerformSegue'の中から' didUserLogin'を呼び出しています。これはあなたが既にセグの途中にあるので、別のセグを実行したりアラートを表示することはできません。また、shouldPerformSegueで非同期操作を実行する必要があります。ボタンタップなどに応答してログインを確認し、結果を使用してセグをトリガーしてください。 – Paulw11
@ Paulw11ありがとうございます。ありがとうございます。 – focus
@ Paulw11ログインボタンのIBActionを追加しました。 performSegueを呼び出すが、それでも起こっていない?? – focus