在 Swift 中的容器视图和 ViewController 之间进行委托
Delegate between Container View and ViewController in Swift
我问了 ,我得到了他所寻求的解决方案。现在,我需要扩大我的问题。 使用委托,如何创建一个委托给 ViewController 发送数据给 ContainerView 和 ContainerView 发送数据给 ViewController?
好吧,我不知道这是否完全是您要找的,但我在这种情况下一直做的是将每个视图控制器记录在另一个 class 中。
例如,如果您的容器视图具有标识符为 "Embed Segue"
的嵌入转场,那么您的 classes 可能如下所示:
超级视图Class
Class ViewControllerOne: UIViewController {
var data = "This is my data I may want to change"
var subView: ViewControllerTwo?
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if segue.identifier == "Embed Segue" {
let destinationVC = segue.destinationViewController as! ViewControllerTwo
destinationVC.superView = self
self.subView = destinationVC
}
}
}
嵌入式Class
Class ViewControllerTwo: UIViewController {
var data = "This is the other view controller's copy of that data"
var superView: ViewControllerOne?
}
然后你就可以简单地通过分别引用self.subView.data
和self.superView.data
在这些视图控制器之间传递数据。
编辑: ViewControllerTwo 要将数据传回 ViewControllerOne,只需引用 self.superView.data
。例如:
Class ViewControllerTwo: UIViewController {
var data = "This is the other view controller's copy of that data"
var superView: ViewControllerOne?
func passDataBack() {
self.superView.data = self.data
}
}
这将更新第一个视图控制器中的数据变量。
我问了
好吧,我不知道这是否完全是您要找的,但我在这种情况下一直做的是将每个视图控制器记录在另一个 class 中。
例如,如果您的容器视图具有标识符为 "Embed Segue"
的嵌入转场,那么您的 classes 可能如下所示:
超级视图Class
Class ViewControllerOne: UIViewController {
var data = "This is my data I may want to change"
var subView: ViewControllerTwo?
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if segue.identifier == "Embed Segue" {
let destinationVC = segue.destinationViewController as! ViewControllerTwo
destinationVC.superView = self
self.subView = destinationVC
}
}
}
嵌入式Class
Class ViewControllerTwo: UIViewController {
var data = "This is the other view controller's copy of that data"
var superView: ViewControllerOne?
}
然后你就可以简单地通过分别引用self.subView.data
和self.superView.data
在这些视图控制器之间传递数据。
编辑: ViewControllerTwo 要将数据传回 ViewControllerOne,只需引用 self.superView.data
。例如:
Class ViewControllerTwo: UIViewController {
var data = "This is the other view controller's copy of that data"
var superView: ViewControllerOne?
func passDataBack() {
self.superView.data = self.data
}
}
这将更新第一个视图控制器中的数据变量。