Swift prepareForSegue取消

我试图实现一个login屏幕,当login被点击它做segue“login”。

我添加了一个prepareForSegue()覆盖尝试取消它,如果login失败,但我没有看到任何方法来取消segue,如果失败。

做这个的最好方式是什么?

您应该重写shouldPerformSegueWithIdentifier ,如果login失败,则返回false:

 override func shouldPerformSegueWithIdentifier(identifier: String?, sender: AnyObject?) -> Bool { if let ident = identifier { if ident == "YourIdentifier" { if loginSuccess != true { return false } } } return true } 

SWIFT 3更新 Swift 3方法现在被称为shouldPerformSegue

  override func shouldPerformSegue(withIdentifier identifier: String?, sender: Any?) -> Bool { if let ident = identifier { if ident == "YourIdentifier" { if loginSuccess != true { return false } } } return true } 

//扩展

如果以编程方式调用performSegueWithIdentifier,则不会调用此方法,但这不是必需的,您可以将其称为只是您的login成功,否则忽略它:

 if loginSuccess { performSegueWithIdentifier("login", sender: nil) } 

你可以从视图控制器,而不是从指定的button继续。 您可以通过从故事板上的VC顶部的黄色button上按住Ctrl键进行拖动。 记得给segue一个标识符!

然后你可以从loginbutton创build一个IBAction函数,并执行SegueWithIdentifier。 它应该看起来像这样:

 @IBAction func loginButtonTapped(sender: UIButton) { if loginSuccess { performSegue(withIdentifier: "login", sender: nil) } } 

那么在准备(:)时,你可以为segue做额外的设置,因为它会在实际的segue发生之前被调用。