ログインが正しいかどうかをチェックする機能があります。OKなら次の画面を表示します。ユーザーが間違っている場合は、セグエをキャンセルしてアラートを表示します。
shouldPerformSegueWithIdentifier 関数でこの関数を呼び出すと、(ユーザーが正しいかどうかにかかわらず) ブール変数に値が渡され、shouldPerformSegueWithIdentifier の戻り値がこのブール値になるため、問題が発生します。問題は、その値を使用せず、デフォルトのままであることです。これは私のコードです:
override func shouldPerformSegueWithIdentifier(identifier: String!, sender: AnyObject!) -> Bool {
var userIsCorrect = false //THIS IS THE BOOLEAN
if identifier == "fromLogInToGetIn" {
self.loginRequest("http://myurl.com",
withParams: ["email":"email@email.com","password":"password"])
{
(succeeded: Bool, msg: String) -> () in
var alert = UIAlertView(title: "Success!", message: msg, delegate: nil, cancelButtonTitle: "Okay.")
if(succeeded) {
if msg == "0"
{
userIsCorrect = false // BOOLEAN DOES NOT TAKE THE VALUE
alert.title = "Error"
alert.message = "Incorrect user"
}
else
{
userIsCorrect = true // BOOLEAN DOES NOT TAKE THE VALUE
}
}
else {
userIsCorrect = false // BOOLEAN DOES NOT TAKE THE VALUE
alert.title = "Error"
alert.message = "Something is wrong"
}
// Move to the UI thread
dispatch_async(dispatch_get_main_queue(), { () -> Void in
// Show the alert
if userIsCorrect == false
{
alert.show()
}
})
}
}
return userIsCorrect // ALWAYS RETURN DEFAULT VALUE
}
前もって感謝します。