快速获取viewController.view的当前viewController

问题描述 投票:0回答:2

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

viewController = CategoriesViewController

并且我正在花药中展示其观点

viewController = HomeViewController

通过使用

CategoriesViewController.view所以当我想到达

[HomeViewController from CategoriesViewController]

我这样做

let vc = self.presentingViewController as? HomeViewController

但它告诉我这是零我尝试过

.parentViewController

它正在返回

CategoriesViewController

ios swift xcode viewcontroller
2个回答
0
投票
  • CategoriesViewController及其视图中都创建一个回调闭包属性。
  • 在显示控制器之前,将闭包分配给更改属性的值到控制器中的回调属性。
  • viewDidLoad中,将闭合移交给视图。
  • 在视图中调用要在呈现控制器中执行的闭包。

0
投票

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

    protocol ChangeVariableProtocol {
            func changeVar(variable: Int)
        }

在协议本身中,您仅声明方法。在您的CategoriesViewController中,您将像这样创建一个代表Varibale []

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

希望这会有所帮助!

© www.soinside.com 2019 - 2024. All rights reserved.