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发生之前被调用。