首页 > 解决方案 > 快速获取viewController.view的呈现viewController

问题描述

我正在尝试获取 viewController 视图的呈现 viewController 这个想法是这样的:我有一个

viewController = CategoriesViewController

我在花药里展示它的观点

viewController = HomeViewController

通过使用

CategoriesViewController.view 所以当我想到达

HomeViewControllerCategoriesViewController

我这样做

let vc = self.presentingViewController as? HomeViewController

但它告诉我它是 nil 我试过了

.parentViewController

它正在返回

CategoriesViewController

标签: iosswiftxcodeviewcontroller

解决方案


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

    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.

希望这可以帮助!


推荐阅读