【问题标题】:Using shouldPerformSegueWithIdentifier( ) method in Swift在 Swift 中使用 shouldPerformSegueWithIdentifier() 方法
【发布时间】:2014-08-04 07:23:32
【问题描述】:

我正在尝试使用 swift 的 shouldPerformSegueWithIdentifier() 方法,但它接受 2 个参数。这些是(标识符:字符串!,发件人:AnyObject)

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

  1. 我应该使用什么作为标识符? Apple 的文档中解释说,标识符是一个字符串,用于标识触发的 segue。所以假设我的 segue 有 loginSegueProcess 的名称。我怎么能在我的 ViewController 中使用它 tat 分配给我的 UIView?问题是我在代码中声明了该方法,它要求我指定两个参数(标识符和发送者)。我如何提供论据?

  2. 这种方法真的能满足我的需求吗?我的意思是,如果它确实会在单击我的登录按钮时停止 segue 转换,并且取决于是否提供了正确的凭据,它将带您进入下一个视图,或者它将显示,例如,一个 AlertView。

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

提前非常感谢!

【问题讨论】:

    标签: iphone swift segue ios8 uistoryboardsegue


    【解决方案1】:

    这不是你想做的吗?

    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
    }
    

    【讨论】:

    • 这里的 else 子句是多余的。您可以在返回 true 之前打印“*** YEP,segue will occur”
    【解决方案2】:

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

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

    现在是第三种情况,如果您的 segue 是从登录按钮连接的(您必须从控制器本身连接它)。不再需要检查shouldPerformSegueWithIdentifier。从服务器获得成功响应后,您可以使用performSegueWithIdentifier() 调用segue

    【讨论】:

    • 感谢您的回复。因此,我希望使用您提到的第三种情况。我已经设置了服务器响应并且它可以工作。现在如何设置 segue 的标识符?再次感谢您!
    • 你是否已经设置了从第一个控制器到第二个控制器的 segue?
    • 然后选择segue转到属性检查器,在那里你可以给出标识符
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-12
    • 2017-01-29
    • 2019-06-14
    相关资源
    最近更新 更多