在 swift 中获得 viewController.view 的呈现 viewController
Get the presenting viewController of viewController.view in swift
我正在尝试获取 viewController 的 viewController 视图
这个想法是这样的:
我有一个
viewController = CategoriesViewController
我正在花药中展示它的观点
viewController = HomeViewController
通过使用
CategoriesViewController.view
所以当我想到达
HomeViewController
来自 CategoriesViewController
我这样做
let vc = self.presentingViewController as? HomeViewController
但它告诉我它是零
我尝试了
.parentViewController
它正在返回
CategoriesViewController
- 在
CategoriesViewController
及其视图中创建回调闭包 属性。
- 在呈现控制器之前,将闭包分配给 将 属性 的值更改为控制器中的回调 属性。
- 在
viewDidLoad
中将闭包交给视图。
- 调用要在呈现控制器中执行的视图中的闭包。
如果您想使用 CategoriesViewController
更改 HomeVieController
中的变量,您可以创建自己的 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
}
并确保在实例化 CategoriesViewController
时初始化 changeVarDelegate
。
希望对您有所帮助!
我正在尝试获取 viewController 的 viewController 视图 这个想法是这样的: 我有一个
viewController = CategoriesViewController
我正在花药中展示它的观点
viewController = HomeViewController
通过使用
CategoriesViewController.view
所以当我想到达
HomeViewController
来自 CategoriesViewController
我这样做
let vc = self.presentingViewController as? HomeViewController
但它告诉我它是零 我尝试了
.parentViewController
它正在返回
CategoriesViewController
- 在
CategoriesViewController
及其视图中创建回调闭包 属性。 - 在呈现控制器之前,将闭包分配给 将 属性 的值更改为控制器中的回调 属性。
- 在
viewDidLoad
中将闭包交给视图。 - 调用要在呈现控制器中执行的视图中的闭包。
如果您想使用 CategoriesViewController
更改 HomeVieController
中的变量,您可以创建自己的 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
}
并确保在实例化 CategoriesViewController
时初始化 changeVarDelegate
。
希望对您有所帮助!