【发布时间】:2017-05-10 22:03:28
【问题描述】:
我知道向后传递数据有一些答案,但它们适用于连续的视图控制器。我有 3 个视图控制器和一个导航控制器。所有转场都是“显示转场”。我想将数据从 VC3 传递到 VC1。我正在尝试使用委托,但卡住了:
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
-
所以不能使用委托来完成?我的 VC3 有一个表格视图。每当我单击一个单元格时,我都想移动到 VC1 并将数据传递给它。我不确定如何通过 unwind 来做到这一点。
-
您可以使用委托,但它更混乱。您需要定义协议并通过不需要它的视图控制器“下线”传递委托。通过使用 unwind 方法,VC1 可以访问故事板 segue 的
sourceViewController属性,并通过其 unwind 方法获取对 VC3 的引用。然后它可以从 vc3 的属性中读取所需的数据 -
谢谢你,保罗。如何将表格视图单元格连接到出口? @Paulw11