我知道有向後傳遞數據的答案,但它們是連續視圖控制器的答案。我有3個視圖控制器和一個導航控制器。所有的賽段都是「show segue」。我想將數據從VC3傳遞給VC1。我試圖使用委託,但被卡住:iOS/Swift 3:在非連續視圖控制器之間向後傳遞數據
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個塞格斯。 您的善意幫助將不勝感激。
[unwind segue](https://developer.apple.com/library/content/technotes/tn2298/_index.html)是你需要的所有東西 – Paulw11
所以不能用委託來完成?我的VC3有一個表格視圖。每當我點擊一個單元格時,我想移動到VC1並將數據傳遞給它。我不確定我如何放鬆地做到這一點。 – benh
你可以使用委託,但它更混亂。您需要定義協議並通過不需要它的視圖控制器「下線」傳遞委託。通過使用unwind方法,VC1可以訪問故事板segue的'sourceViewController'屬性,通過它的unwind方法來獲取對VC3的引用。然後它可以從vc3的屬性中讀取所需的數據 – Paulw11