Swift prepareForSegue cancel

后端 未结 3 1225
野的像风
野的像风 2020-12-25 10:22

I\'m trying to implement a login screen, when login is clicked it does the segue \"login\".

I added a prepareForSegue() override to try to cancel it if the login fai

3条回答
  •  有刺的猬
    2020-12-25 11:06

    You should override shouldPerformSegueWithIdentifier and return false if login failed:

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

    UPDATED FOR SWIFT 3 Swift 3 method is now called shouldPerformSegue

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

    // Extended

    If you programmatically call performSegueWithIdentifier this method will not be called but it's not need for that, you can call it just your login success, otherwise ignore it:

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

提交回复
热议问题