首页 > 解决方案 > 在容器视图中设置委托

问题描述

我的 Storyboard 中有一个容器视图,它显示了另一个我已经编程的视图控制器和东西。我想在主视图控制器和包含视图控制器之间进行通信。我知道如何使用委托并且我对使用它们很满意,但是我通常在初始化 ViewController 时设置委托,但是在这种情况下,我不知道在哪里应用它,因为每个情节提要中的视图控制器已经存在. 通常我会做这样的事情:

class HomeVC: UIViewController {
    func initializeVC() {
        resultsVC = self.storyboard?.instantiateViewController(withIdentifier: "resultsView") as! GoalsVC
        resultsVC.calcDelegate = self //I set the "HomeVC" as the Delegate since it has all the functions I need
    }
}

如上所述,由于我从未真正通过代码创建过这个视图控制器,所以我不知道如何分配委托(特别是将委托设置为“self”(其中 Self 是主视图控制器)

标签: iosswiftdelegates

解决方案


当您将故事板用于容器视图时。有一个seguewithembed类型。给这个segueidentifierMyContainedViewControllerSegueId

然后在prepare(for segue:

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
        if segue.identifier == "MyContainedViewControllerSegueId" {
            // here you get your contained view controller as `segue.destination`
            // cast it your subclassed view controller
            // use delegate on that subclassed view controller for communication purpose.
        }
    }

推荐阅读