在Swift中的Container View和ViewController之间进行委托

时间:2015-12-16 06:33:26

标签: swift uiviewcontroller swift2 uicontainerview swift-protocols

我问question before,我得到了他所寻求的解决方案。现在,我需要扩大我的问题。 使用委托,我如何创建一个委托给ViewController发送数据到ContainerView和ContainerView发送数据到ViewController

1 个答案:

答案 0 :(得分:1)

好吧,我不知道这是否完全是你正在寻找的,但我在这种情况下一直做的事情就是记录每个视图控制器在另一个类中。

例如,如果您的容器视图具有标识符为"Embed Segue"的嵌入segue,那么您的类可能如下所示:

Superview 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 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。 e.g:

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
    }
}

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