从编码按钮中解开segue - swift

时间:2015-08-11 23:12:29

标签: ios swift segue unwind-segue

我试图使用unwind segue从用户必须选择选项的控制器返回:

在主控制器中,用户可以触摸一个按钮,将它们定向到第二个视图控制器,在那里我以编程方式构建按钮(选项)。当用户选择其中一个按钮时,我希望它们返回上一个控制器并传递按钮数据。

我无法找到让unwind segue工作的方法。

这是我在第二个视图控制器中的内容:

// Tile touch handler function when button pressed
    func selectedMood(sender:UIButton){
        println("touching tile")

        if(self.toShow == "mood"){
            self.mood = moodAre[sender.tag - 1]
        }
        else{
            self.action = actionAre[sender.tag - 1]
        }

        self.performSegueWithIdentifier("BackToPhraseSegue", sender: self)
    }

@IBAction func prepareForUnwind(segue: UIStoryboardSegue) {
        if (segue.identifier == "BackToPhraseSegue") {
            let destination = (segue.destinationViewController as! PhraseController)
            destination.mood = self.mood
            destination.action = self.action
            destination.place = self.place
        }
    }

    // Data transmit between controller
    override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject!) {
        if (segue.identifier == "BackToPhraseSegue") {
            let destination = (segue.destinationViewController as! PhraseController)
            destination.mood = self.mood
            destination.action = self.action
            destination.place = self.place
        }
    }

我将控制器链接到故事板中的退出按钮(选择prepareForUnwind func),并为unwindSegue" BackToPhraseSegue"

提供了一个标识符。

我错过了什么......

1 个答案:

答案 0 :(得分:2)

请查看此答案的第二部分,以确保正确连接了segue。

How to wire up the exit segue so it can be called programmatically

您要展开的函数需要位于要返回的viewController中。而不是prepareForUnwind,你需要在前一个viewController中使用unwindToHere(你要返回的viewController):

@IBAction func unwindToHere(segue: UIStoryboardSegue) {
    // And we are back
    let svc = segue.sourceViewController as! TheViewControllerClassYouAreReturningFrom
    // use svc to get mood, action, and place
}