0

ユーザーがオプションを選択する必要があるコントローラーから戻るために、アンワインド セグエを使用しようとしています。

メインコントローラーでは、ユーザーはボタンをタッチして、プログラムでボタン (オプション) を構築する 2 番目のビューコントローラーに誘導できます。ユーザーがボタンの 1 つを選択したら、前のコントローラーに戻ってボタン データを渡すようにします。

巻き戻しセグエを機能させる方法が見つかりません。

2番目のView Controllerにあるものは次のとおりです。

// 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"

何が足りないの...

4

1 に答える 1

2

この回答の 2 番目の部分を見て、セグエが正しく配線されていることを確認してください。

プログラムで呼び出せるように出口セグエを配線する方法

巻き戻し先の関数は、戻り先の viewController にある必要があります。の代わりに、前の viewController (戻り先の viewController) に がprepareForUnwind必要です。unwindToHere

@IBAction func unwindToHere(segue: UIStoryboardSegue) {
    // And we are back
    let svc = segue.sourceViewController as! TheViewControllerClassYouAreReturningFrom
    // use svc to get mood, action, and place
}
于 2015-08-11T23:45:10.447 に答える