ios - 在容器视图中设置委托
问题描述
我的 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 是主视图控制器)
解决方案
当您将故事板用于容器视图时。有一个segue
withembed
类型。给这个segue
,identifier
说MyContainedViewControllerSegueId
然后在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.
}
}
推荐阅读
- javascript - 从插件/扩展访问 Twitch 的 React 视频播放器
- reactjs - 如何防止通过更漂亮的 eslint 自动将 0.00 转换为 0.0
- google-app-engine - 为什么 App Engine API 会根据用户返回不同的域映射?
- google-bigquery - Bigquery - 将多个 csv 文件从存储桶导出到本地文件夹(C 盘)
- ios - 如何在我的浏览器中本地运行 iOS / Android 设备?
- python - 如何在没有数据框的情况下绘制 seaborn countplot?
- r - 使用 pivot_long 来容纳日期列
- excel - 如果列 AD=1 则将 B 的内容复制到 C
- javascript - angularjs 捕获触发 $exceptionHandler 错误的 html 元素和数据?
- amazon-web-services - 适用于 EMR Web UI 的 AWS 网络策略?