斯威夫特:准备两个不同的段落

Rag*_*nar 9 xcode segue swift

我有2 UIButtons个观点.每个都链接到2个不同的视图.他们必须根据您刚刚点击的按钮传递不同的数据.

我知道有不同的方法,segue但我想使用prepareForSegue每个版本(似乎更清楚我segue在故事板和一些代码来解释发生了什么).

我试过这个......

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
    if (segue != "historySegue") {
        let controller = segue.destinationViewController as! ResultViewController
        controller.match = self.match
    } else {
        let controller = segue.destinationViewController as! HistoryViewController
        controller.history = self.history
    }
}


@IBAction func showHistory(sender: UIButton) {
    performSegueWithIdentifier("historySegue", sender: self)
}

@IBAction func match(sender: UIButton) {
    performSegueWithIdentifier("matchSegue", sender: self)
}
Run Code Online (Sandbox Code Playgroud)

但是当我点击按钮时出现错误

(LLDB)

Rac*_*vey 19

取出您的IBActions(确保通过Interface Builder中的右侧栏以及代码中的Connections Inspector中删除它们).对于segues,只需使用Interface Builder,确保两个segue的标识符都正确,然后尝试这个prepareForSegue方法:

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
    if segue.identifier == "matchSegue" {
        let controller = segue.destinationViewController as! ResultViewController
        controller.match = self.match
    } else if segue.identifier == "historySegue" {
        let controller = segue.destinationViewController as! HistoryViewController
        controller.history = self.history
    }
}
Run Code Online (Sandbox Code Playgroud)