Segue 在 if / else 子句中过早执行

Segue performing prematurely in if / else clause

以下代码

class ViewController: UIViewController {

@IBOutlet weak var knock: UIButton!
@IBOutlet weak var label: UILabel!

var count: Int = 0
var unlocked: Int = 0

override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view, typically from a nib.

}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
}


@IBAction func knockKnock(sender: UIButton) {

    if count < 20 {
        label.text = "Knocked \(count) times."

    } else if count > 19 && count < 40 {
        label.text = "Knocked \(count) times."
        label.textColor = UIColor.randomColor()

    } else if count > 39 && count < 100 {
        label.text = "That's enough."
        label.textColor = UIColor.blackColor()

    } else if count > 99 && count < 102 {
        label.text = "I wish you hadn't done that."
        label.textColor = UIColor.redColor()

    } else if count == 103 {
        label.text = "Fine, come in."
        label.textColor = UIColor.greenColor()
        count = 126
        unlocked += 1

    }

    if unlocked > 0 {
        self.performSegueWithIdentifier("InsideHomeSegue", sender:sender)
    }

    count += 1

}

中过早地执行了 Segue
 if unlocked > 0 {
        self.performSegueWithIdentifier("InsideHomeSegue", sender:sender)
    }

第一次按下按钮时会立即执行 segue,我不明白,因为此时代码在错误的 if 语句后面应该无法访问,因为 int unlocked0

初始化

我遇到过类似的问题,结果证明是 XCode 本身的问题,而不是我的代码;我查看了所有我能找到的引用 Interface Builder 中的任何变量或对象的文件,检查了命名不一致、流氓出口等。

我对 Segues 的理解仍然很不稳定,如果有人能提供任何详细的帮助,我将不胜感激。

较大的 if / else if 块在添加 Segue 代码之前一直正常工作到最终增量。 最初 self.performSegueWithIdentifier("InsideHomeSegue", sender:sender) 行在 else if count == 103 { 块内;添加 var unlocked: Int 以解决 Segue 问题无济于事。

我已经通读了几页关于 Segues 的 XCode 文档,但还没有找到我可以尝试的其他内容。

我可能忽略了一些非常明显的事情,但无论如何,感谢阅读。

干杯

编辑: 我已经检查了所有出口,它是目前项目中唯一的 Segue,并且没有连接到其他任何地方。 Segue 在按下按钮时激活,而不是在视图加载时立即激活。

就像我的评论所说的那样,您已经将 segue 与您的按钮连接起来,因此 segue 将始终执行。它与 if 子句无关。

您应该使用 ViewController 连接,而不是使用按钮连接

你必须用一个 segue 连接你的两个 ViewController,给它一个标识符。然后,您可以通过这种方式触发segue。

self.performSegueWithIdentifier("segue_name_identifier", sender: self)

在这里你可以轻松地设置你的 segue。

希望对您有所帮助。