我正在尝试使用swift的shouldPerformSegueWithIdentifier()方法,但它接受2个参数。这些是(标识符:String!,sender:AnyObject)
我的主要目标是在我的故事板中按下登录按钮时执行代码,并且根据一系列检查返回TRUE或FALSE,具体取决于是否提供了正确的用户名和密码。所以这是我的问题:
我应该使用什么作为标识符? Apple的文档说明标识符是一个标识触发的segue的字符串。所以假设我的segue有loginSegueProcess的名字。我如何在我的ViewController中使用它将它分配给我的UIView?问题是我在我的代码中声明了方法,它要求我指定两个参数(标识符和发送者)。我怎么能提供论据?
这种方法真的能满足我的需求吗?我的意思是,如果点击我的登录按钮确实会停止segue过渡,并且取决于是否提供了正确的凭据,它将带您到下一个视图,或者它将显示,例如,一个AlertView。 / p>
最后,我认为performSegueWithIdentifier(args)方法对我也有帮助。有人知道它们之间的区别吗?
提前多多感谢!
答案 0 :(得分:7)
不是你想做的吗?
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
}
答案 1 :(得分:1)
您可能不会自己调用shouldPerformSegueWithIdentifier()
方法。它将在转换到下一个视图之前自动调用,从而有机会确定应该发生转换还是。您可以有条件地从此方法返回YES / NO。如果您的情况不涉及任何服务器调用,那么简单的逻辑检查这种方法就足够了。
performSegueWithIdentifier()
用于以编程方式调用segue。考虑上面的网络呼叫情况,您可以从shouldPerformSegueWithIdentifier()
开始返回NO,因为身份验证正在进行中。从服务器获得响应后,如果成功,您可以调用segue以performSegueWithIdentifier
执行(此处标识符是您在故事板中给出的ID)。在确保你应该从shouldPerformSegueWithIdentifier()
返回YES之前。
现在是第三种情况,如果你的segue是从登录按钮连接的(你必须从控制器本身连接它)。不再需要检查shouldPerformSegueWithIdentifier
。从服务器获取成功响应后,您可以使用performSegueWithIdentifier()
调用segue