簡體   English   中英

從容器視圖調用父視圖控制器功能

[英]Call parent View controller function from container view

我有一個容器視圖,它根據用戶操作在里面執行幾個segue。 我還有一個頂級UIView,我想從容器視圖segue中控制並設置它的狀態。

我試圖使用協議設置委托人到家庭控制器,還有以下方法:

 if let parent = self.parent as? HomeController { 
        parent.handleTopBarState(state: .web)
 }

我想要發生的是當我在特定的視圖控制器上時,設置父視圖控制器的頂部條視圖的狀態。

謝謝。

如果您已添加子視圖控制器,則只需使用self.parent即可訪問。 如果let和cast,請確保將其放入

if let parent = self.parent as? ParentViewController {
        parent.resetItemsCollectionView()
    }

如果在另一個視圖控制器上嵌入了視圖控制器,則可以通過多種方式向其父視圖控制器發送消息。

  1. 在子(嵌入式)視圖控制器中,您可以引用父級。 為storyboard中的嵌入segue指定標識符,使用child中父類的類型聲明var ,並在prepare(for segue: UIStoryboardSegue, sender: Any?)函數上指定父類,並調用父類的任何公共方法。
  2. 創建協議,讓父級確認協議,在子級中創建協議的var,在prepare(for segue: UIStoryboardSegue, sender: Any?)中將父級設置為子級的協議對象prepare(for segue: UIStoryboardSegue, sender: Any?) ,並prepare(for segue: UIStoryboardSegue, sender: Any?)調用協議方法。
  3. 只需向孩子發布NotificationCenter ,並觀察父母的通知。 NotificationCenter 文檔 ,您可以在這里找到使用它的簡短示例。

希望這可以幫助!

PS:你也可以在父vc中觀察孩子的屬性,如果你想這樣,我可以解釋一下。

暫無
暫無

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

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