データを後ろ向きに渡す回答がありますが、連続したView Controller用です。私は3つのビューコントローラとナビゲーションコントローラを持っています。すべてのセグは「ショー・セグ」です。私はVC3からVC1にデータを渡したいと思います。私は、デリゲートを使用しようとしているが、立ち往生:iOS/Swift 3:連続していないView Controller間でデータをやりとりする
protocol Delegate:class {
func getCityId(with id: String)
}
Class VC3:UIViewController{
weak var delegate: Delegate?
let id:String?
func passDataBackwards() {
delegate?.getCityId(with: self.id!)
}
}
Class VC1:UIViewController, Delegate{
func getCityId(with id: String) {
print ("id from search: \(id)")
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
let vc3 = (segue.destination as! VC3)
vc3.delegate = self
}
}
私の問題は、私は私の元と宛先の間の2 seguesを持っているということです。 あなたの親切な助けに感謝します。
[unwind segue](https://developer.apple.com/library/content/technotes/tn2298/_index.html)がすべて必要です – Paulw11
デリゲートを使って行うことはできませんか?私のVC3にはテーブルビューがあります。セルをクリックするたびに、VC1に移動してデータを渡したいと思います。私はどのように私はそれをやわらげることができるか分からない。 – benh
デリゲートを使用することはできますが、処理が面倒です。プロトコルを定義し、それを必要としないビューコントローラーを介してデリゲートを「ダウンライン」に渡す必要があります。 unwindメソッドを使用することにより、VC1は、unwindメソッドを渡したストーリーボードsegueの 'sourceViewController'プロパティにアクセスして、VC3への参照を取得できます。その後、vc3のプロパティから必要なデータを読み取ることができます – Paulw11