これが私にとってうまくいったSwiftソリューションです。以下のコードは、ストーリーボードとコードでセグエを正しく接続した場合にのみ機能します。アンワインド セグエの設定に関する優れた説明については、このページをご覧ください。
要約すれば:
他の複数のビューから同じビューにアクセスしています。そのため、ビューにセグエするときに、ソース ビュー コントローラー (現在のビュー) を移動先のビューのプロパティに渡すことができます。
巻き戻すビューで、どこから来たかに関する情報 (クラス) を保持しているプロパティを確認し、それがどのビューであるかに基づいてセグエを実行できます。
コード: (使用例: ホーム -> A -> B または... ホーム -> C -> B)
注: B は、複数の異なるビューに巻き戻すビューです。
A または C: (コードは両方のビューで同じように機能します)
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if segue.identifier == "segueIdentifierInViewAthatGoesToViewB" {
let controller:B = segue.destinationViewController as! B
//the code below passes our current view controller class to a property in view B.
//So, view B will know what view we came from.
//In our example, we're coming from view A or C
controller.viewControllerNavigatedFrom = segue.sourceViewController
}
}
B:
// ソース ビュー コントローラー (このビューにセグエしたときに渡したもの) をチェックし、元の場所に基づいてセグエを実行する IBAction をセットアップします。これをボタンまたは本当に必要なものに接続できます。
//isKindOfClass(A) - 「A」はクラスの名前です
//setup a property to receive the view controller class where we are coming from
var viewControllerNavigatedFrom:AnyObject?
@IBAction func myButtonPressed(sender: AnyObject) {
if self.viewControllerNavigatedFrom!.isKindOfClass(A) {
//Unwind to view A
performSegueWithIdentifier("unwindFromBbackToA", sender: sender)
}
else if self.viewControllerNavigatedFrom!.isKindOfClass(C) {
//Unwind to view C
performSegueWithIdentifier("unwindFromBbackToC", sender: sender)
}
}