簡體   English   中英

最佳實踐:從iOS中的另一個實例訪問UIViewController實例

[英]Best Practice: Accessing instance of UIViewController from another in iOS

我在堆棧上有一個帶有4個視圖控制器的導航控制器。 我需要從ViewController4訪問ViewController1中的函數。 正確的方法是什么?

  1. 我是否要通過ViewController2和3將引用傳遞給ViewController1,然后使用協議委托來訪問該函數?

  2. 我是否將對ViewController1的引用存儲在結構中,然后從那里訪問它?

第二是我目前正在做的事情。 我離開ViewController1時設置了引用,完成后將其設置回nil。

為什么我需要這樣做:

VC1的表視圖中有很多項目。 這些項目中的數據在VC4中進行了編輯。 在VC4中完成編輯后,我想保存,彈出到根目錄並用新數據重新加載tableview。

我認為您可以使用通知。 使VC1訂閱通知。 需要時,在VC4中發送通知。

你的計划全錯了。 您應該做的是擁有一個數據模型,該模型可以發布有關其數據更改的通知。 視圖控制器之間不應有任何鏈接。 VC1應該准備好偵聽來自數據模型的通知。 當VC4更新數據模型時,該數據模型將告知正在偵聽的任何人其已更新。

使用此設置,任何數量的視圖控制器都可以監聽正在傳遞的數據模型的同一實例。 您應用的任何部分都可以根據需要響應這些通知。 這種設計的最好之處在於,除了每個人都了解數據模型之外,沒有任何一個班級對任何其他特定的班級都有任何了解。

數據模型不了解任何控制器或視圖。

除了需要顯示另一個控制器的控制器以外,其他任何控制器都沒有與其他控制器的任何直接鏈接。

暫無
暫無

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

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