首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >快速获取viewController of viewController.view

快速获取viewController of viewController.view
EN

Stack Overflow用户
提问于 2020-03-24 16:28:21
回答 2查看 34关注 0票数 0

我正在尝试获取viewController视图的显示viewController--这个想法是这样的:

viewController = CategoriesViewController

我在另一个世界里展示它的观点

viewController = HomeViewController

通过使用

CategoriesViewController.view所以当我想到达

HomeViewController来自CategoriesViewController

我这样做

let vc = self.presentingViewController as? HomeViewController

但它告诉我这是零,我尝试了

.parentViewController

它又回来了

CategoriesViewController

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-03-24 17:19:46

如果您想使用HomeVieController更改CategoriesViewController中的变量,您可以创建自己的协议。您可以使用协议在不同控制器之间进行通信。

代码语言:javascript
复制
    protocol ChangeVariableProtocol {
            func changeVar(variable: Int)
        }

在协议本身中,您只声明方法。在您的CategoriesViewController中,您将创建像这样的委托Varibale

var changeVarDelegate: ChangeVariableProtocl?

每当您想在CategoriesViewController中更改变量时,就调用您的协议方法。

changeVarDelegate?.changeVar(10)

在HomeViewController中,您需要实现该协议并初始化changeVarDelegate变量。

代码语言:javascript
复制
    extension HomeViewController: ChangeVarProtocol {
        func changeVar(var: variable) {
           // Implement your own logic here
         self.valueToChange = variable
        }

并确保在实例changeVarDelegate时初始化CategoriesViewController

希望这能有所帮助!

票数 1
EN

Stack Overflow用户

发布于 2020-03-24 16:55:38

  • CategoriesViewController及其视图中创建回调闭包属性。
  • 在呈现控制器之前,将闭包分配给控制器中的回调属性,以更改属性值。
  • viewDidLoad中,将闭包交给视图。
  • 调用要在呈现控制器中执行的视图中的闭包。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60835236

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档