Swift中使用shouldPerformSegueWithIdentifier()方法



我试图使用swift的shouldPerformSegueWithIdentifier()方法,但它接受2个参数。它们是(identifier: String!)发送者:AnyObject)

我的主要目标是在我的故事板中按下登录按钮时执行代码,并根据是否提供了正确的用户名和密码,根据一系列检查返回TRUE或FALSE。下面是我的问题:

  1. 我应该用什么作为标识符?苹果的文档它解释了标识符是一个字符串用来标识被触发的segue。假设segue的名字是loginSegueProcess。我如何在分配给UIView的ViewController中使用它?问题是我在代码中声明了这个方法,它要求我指定两个参数(identifier &发送者)。我该如何提供论据呢?

  2. 这个方法真的能满足我的需求吗?我的意思是,如果它确实会在点击Login按钮时停止segue过渡并且根据是否提供了正确的凭据它会带你到下一个视图或者它会显示,例如,AlertView

最后,我认为performSegueWithIdentifier(args)方法也会帮助我。有人知道它们的区别吗?

提前感谢!

这不是你想做的吗?

override func shouldPerformSegueWithIdentifier(identifier: String!, sender: AnyObject!) -> Bool {
    if identifier == "LoginSuccessSegue" { // you define it in the storyboard (click on the segue, then Attributes' inspector > Identifier
        var segueShouldOccur = /** do whatever you need to set this var to true or false */
        if !segueShouldOccur {
            println("*** NOPE, segue wont occur")
            return false
        }
        else {
            println("*** YEP, segue will occur")
        }
    }
    // by default, transition
    return true
}

您不能自己调用shouldPerformSegueWithIdentifier()方法。它将在转换到下一个视图之前被自动调用,从而有机会确定是否应该进行转换。这个方法可以有条件地返回YES/NO。如果您的条件不涉及任何服务器调用,那么简单的逻辑检查这个方法对您来说就足够了。

performSegueWithIdentifier()用于以编程方式调用segue。考虑上述网络调用的情况,由于身份验证正在进行,您可能最初从shouldPerformSegueWithIdentifier()返回NO。从服务器获得响应后,如果它成功,你可以调用segue来执行performSegueWithIdentifier(这里的标识符是你在故事板中给出的ID)。在确保你应该从shouldPerformSegueWithIdentifier()返回YES之前。

第三种情况,如果你的segue是从登录按钮连接的(你必须从控制器本身连接它)。不再需要检查shouldPerformSegueWithIdentifier。你可以在从server

获得成功响应后用performSegueWithIdentifier()调用segue

相关内容

最新更新