我正在尝试实现登录屏幕,当点击登录时它会执行segue"登录".
我添加了一个prepareForSegue()覆盖,试图在登录失败时取消它,但是如果出现故障,我没有看到任何取消segue的方法.
做这个的最好方式是什么?
Gre*_*reg 88
shouldPerformSegueWithIdentifier
如果登录失败,您应该覆盖并返回false:
override func shouldPerformSegueWithIdentifier(identifier: String?, sender: AnyObject?) -> Bool {
if let ident = identifier {
if ident == "YourIdentifier" {
if loginSuccess != true {
return false
}
}
}
return true
}
Run Code Online (Sandbox Code Playgroud)
更新为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
}
Run Code Online (Sandbox Code Playgroud)
//扩展
如果以编程方式调用performSegueWithIdentifier,则不会调用此方法但不需要调用它,您可以将其称为登录成功,否则忽略它:
if loginSuccess {
performSegueWithIdentifier("login", sender: nil)
}
Run Code Online (Sandbox Code Playgroud)
Ale*_*erg 19
您可以从View Controller执行segue,而不是从指定的按钮执行.您可以通过从故事板上VC顶部的黄色按钮进行按住Ctrl键拖动来完成此操作.记得给segue一个标识符!
然后,您可以从登录按钮创建IBAction函数,并执行performSegueWithIdentifier.它应该看起来像这样:
@IBAction func loginButtonTapped(sender: UIButton) {
if loginSuccess {
performSegue(withIdentifier: "login", sender: nil)
}
}
Run Code Online (Sandbox Code Playgroud)
然后,在prepare(:)中,你可以为segue做额外的设置,因为它会在实际的segue发生之前被调用.
归档时间: |
|
查看次数: |
24161 次 |
最近记录: |