ios - 快速获取viewController.view的呈现viewController
问题描述
我正在尝试获取 viewController 视图的呈现 viewController 这个想法是这样的:我有一个
viewController = CategoriesViewController
我在花药里展示它的观点
viewController = HomeViewController
通过使用
CategoriesViewController.view
所以当我想到达
HomeViewController
从CategoriesViewController
我这样做
let vc = self.presentingViewController as? HomeViewController
但它告诉我它是 nil 我试过了
.parentViewController
它正在返回
CategoriesViewController
解决方案
如果您想更改使用中的变量,HomeVieController
您CategoriesViewController
可以创建自己的协议。您可以使用协议在不同控制器之间进行通信。
protocol ChangeVariableProtocol {
func changeVar(variable: Int)
}
在协议本身中,您只声明方法。在你的CategoriesViewController
你会像这样创建一个代表变量
var changeVarDelegate: ChangeVariableProtocl?
每当您想更改变量时,CategoriesViewController
您都会调用您的协议方法。
changeVarDelegate?.changeVar(10)
在 HomeViewController 中,您需要实现此协议并初始化 changeVarDelegate 变量。
extension HomeViewController: ChangeVarProtocol {
func changeVar(var: variable) {
// Implement your own logic here
self.valueToChange = variable
}
并确保changeVarDelegate
在实例化CategoriesViewController
.
希望这可以帮助!
推荐阅读
- android - 发送短信方法总是失败
- postgresql - 如何找到我的 Postgresql 用户名和密码?
- .net - 强制在 iGrid.NET 控件中重绘单个单元格
- yaml - 如何在heat模板中使用horizon中存在的安全组
- opencv - 从非固定摄像机镜头中减去背景
- python - Python 使用枢轴重塑数据框。索引不出现
- elasticsearch - 在对象列表中检索受字段值限制的项目
- html-framework-7 - 如何在 html 文件中迭代数组并在 Framework7 V1 中查看其元素?
- amazon-web-services - 如何引导我的 EC2 网络服务器连接到 Chef GUI 页面?它说节点的地方
- javascript - Webpack / ES6 动态导入