отключить переход от закодированной кнопки - Swift

Я пытаюсь использовать 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) в раскадровке и дал идентификатор unwindSegue "BackToPhraseSegue"

Что мне не хватает...


person SKYnine    schedule 11.08.2015    source источник


Ответы (1)


Посмотрите на вторую часть этого ответа, чтобы убедиться, что вы правильно подключили переход.

Как подключить выходной переход, чтобы его можно было вызывать программно

Функция, к которой вы разворачиваетесь, должна находиться в viewController, к которому вы возвращаетесь. Вместо prepareForUnwind вам нужен unwindToHere в предыдущем viewController (в viewController, к которому вы возвращаетесь):

@IBAction func unwindToHere(segue: UIStoryboardSegue) {
    // And we are back
    let svc = segue.sourceViewController as! TheViewControllerClassYouAreReturningFrom
    // use svc to get mood, action, and place
}
person vacawama    schedule 11.08.2015
comment
классно! на самом деле я пытался действовать не с того контроллера... большое спасибо! это не было достаточно ясно в том, что я читал по этому вопросу. - person SKYnine; 12.08.2015