2015-12-13 2 views
0

У меня есть контроллер входа в систему, где он должен помешать пользователю перейти к следующему контроллеру представления через секцию под названием «toMasterTab». Я думаю, что логика может быть неправильной - если пользователь вводит правильные учетные данные и не пуст, он переходит в режим прекращения, но если пользователь не вводил никаких учетных данных (nil) и вводил неправильные учетные данные, тогда он должен помешать segue. До сих пор, я могу получить только UIAlertView всплывал, но кроме этого, я не могу решить эту проблему ...Предотвращение перехода Segue в Login Swift/Parse

@IBAction func loginButton(sender: AnyObject) { 
    let RedPlanetUser = RPUsername.text 
    let RedPlanetUserPassword = RPUserPassword.text 

    PFUser.logInWithUsernameInBackground(RedPlanetUser!, password: RedPlanetUserPassword!) { 
     (user: PFUser?, error: NSError?) -> Void in 

     if user != nil { 
      // Do stuff after successful login 
      self.performSegueWithIdentifier("toMasterTab", sender: self) 
      print("User logged in successfully") 
     } else { 
      // Login failed 
      print("User log in failed") 
      // Present alert 
      var alert = UIAlertView(title: "Login Failed", 
       message: "The username and password do not match.", 
       delegate: self, 
       cancelButtonTitle: "Try Again") 
       alert.show() 

      func shouldPerformSegueWithIdentifier(identifier: String!, object: AnyObject) -> Bool { 
       let identifier = "toMasterTab" 
        // prevent segue 
       return false 
      } 

     } 

    } 

} 
+0

Вы знаете правильное имя пользователя и пароль? Что происходит, когда вы вставляете это? – beyowulf

+0

Тогда segue пойдет прямо к главному пользовательскому интерфейсу приложения – user4513956

+0

Как это отличается от того, что вы хотите? – beyowulf

ответ

1

Я считаю, что вы должны быть перекрывая

override func shouldPerformSegueWithIdentifier 

Проблема заключалось в том, что segue был подключен к кнопке, поэтому он автоматически выполнял сегмент, даже когда условия не были выполнены. Я подключил SEGUE от VC1 к VC2 и использовал следующий код, когда были встречены условия, и не называли Segue, когда условия были ошибочными:

self.performSegueWithIdentifier("toMasterTab", sender: self) 
+0

Это дает мне сообщение об ошибке, чтобы удалить его ...? – user4513956

+0

Возможно, вы могли бы попробовать просто реализовать функцию shouldPerformSegueWithIdentifier и поместить здесь логин. Проверьте, совпадает ли идентификатор с выбранным вами сегментом, а затем, если учетные данные пользователя работают, верните true, иначе отобразите всплывающее окно и верните false, чтобы указать, что segue следует предотвратить. –

+0

Хорошо, я попробую. Кроме того, тип segue в раскадровке должен быть обычным, а не показывать? – user4513956

Смежные вопросы