簡體   English   中英

在 swift 中獲取 viewController.view 的呈現視圖控制器

[英]Get the presenting viewController of viewController.view in swift

我正在嘗試獲取 viewController 視圖的呈現 viewController 這個想法是這樣的:我有一個

viewController = CategoriesViewController

我在花葯中展示它的觀點

viewController = HomeViewController

通過使用

CategoriesViewController.view所以當我想到達

來自CategoriesViewController HomeViewController

我這樣做

let vc = self.presentingViewController as? HomeViewController

但它告訴我它是零我試過

.parentViewController

它正在返回

CategoriesViewController

如果您想使用CategoriesViewController更改HomeVieController的變量,您可以創建自己的 協議 您可以使用協議在不同的控制器之間進行通信。

    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
        }

並確保在實例化CategoriesViewController時初始化changeVarDelegate

希望這可以幫助!

  • CategoriesViewController及其視圖中創建一個回調閉包屬性。
  • 在呈現控制器之前分配閉包以將屬性的值更改為控制器中的回調屬性。
  • viewDidLoad將閉包交給視圖。
  • 在呈現控制器中調用要執行的視圖中的閉包。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM