【问题标题】:Swift prevent storyboard segue from happeningSwift 防止故事板转场发生
【发布时间】:2016-07-14 05:11:38
【问题描述】:

简介

我正在创建一个 Swift 2.0 应用程序,其中一个动作只能执行一定次数,比如 8 次。为了完成这个行为,我需要取消某个 segue,performAction,如果它是通过按下情节提要上链接到它的按钮触发。

研究

我遇到了像http://stackoverflow.com/questions/8066525/prevent-segue-in-prepareforsegue-method 这样的问题,它建议的代码如下:

override func shouldPerformSegueWithIdentifier(identifier: String,sender: AnyObject?) -> Bool {

     return true
 }

实施

我是这样实现的:

override func shouldPerformSegueWithIdentifier(identifier: "createCard" ,sender: AnyObject?) -> Bool {
    if amountOfTimes > 8 { //To be triggered if the segue should be cancelled
        return false
    } else {
    return true
    }
}

但是我得到了错误

预期的 ',' 分隔符

如果amountOfTimes 大于 8,我怎样才能取消 segue?

【问题讨论】:

    标签: swift storyboard


    【解决方案1】:

    要检查您的标识符是否为 "createdCard",请使用 shouldPerformSegueWithIdentifier 方法,如下所示:

    override func shouldPerformSegueWithIdentifier(identifier: String ,sender: AnyObject?) -> Bool {
    
        return !(identifier == "createCard" && amountOfTimes > 8)
    
    }
    

    【讨论】:

    • 谢谢!再次使用电脑时会尝试。
    • 你应该更喜欢return !(identifier == "createCard" && amountOfTimes > 8)而不是不必要的if
    • 你 100% 正确@Sulthan 将编辑答案。谢谢
    【解决方案2】:

    问题是这句话:

    identifier: "createCard"
    

    那不是斯威夫特。这不是一个函数调用,它是一个函数实现。你必须说:

    identifier: String
    

    identifier 不是您设置的值,而是您接收的值。然后您可以查看 看看它是否是"createCard",但您不会声称它是。

    【讨论】:

      【解决方案3】:

      单击第一个 ViewController 的圆形黄色/白色图标(图像中突出显示的左侧)并按住拖动到下一个 ViewController(例如 SubmitOTPVC)。 然后在 swift 文件中写下这段代码:

       self.performSegue(withIdentifier: "otpVC", sender: nil)
      

      这里otpVC是segue的标识符名称。

      【讨论】:

        猜你喜欢
        • 2015-03-12
        • 2012-08-22
        • 2012-07-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-08-24
        • 2013-07-20
        相关资源
        最近更新 更多