在 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.dataself.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
    }
}

这将更新第一个视图控制器中的数据变量。