2010-09-23 66 views
0

我的問題是關於在UIViewControllers之間實現信息傳遞的最佳方式。通過視圖控制器調用方法

如果我有2個ViewController的應用程序,例如用戶在ViewControllerA中選擇一個項目,然後應該在ViewControllerB中顯示該項目和更多細節。

什麼是最好的實施方式?通過appdelegate?或者通過將ViewControllerA的引用傳遞給ViewControllerB?欣賞任何幫助或例子的最佳方式來做到這一點。

+0

[Invoke method in another class]的可能重複(http:// stackoverflow .com/questions/1186620/invoke-method-in-another-class) – 2010-09-23 23:11:36

回答

1

ViewControllerA(VCA)將維護對ViewControllerB(VCB)的引用。 VCB會將所選對象的引用保持爲ivar。當用戶在VCA中選擇一個對象時,VCA實例化VCB(如果尚未實例化),將VCB的selectedObject屬性設置爲該對象,然後推送VCB。 VCB從分配給其selectedObject屬性的對象中讀取信息,將其信息繪製到視圖中。

在VCA中,對於用戶可以選擇的每個「項目」,都需要支持該項目的基礎對象實例。例如,如果用戶從蔬菜列表中進行選擇,UITableView可能由蔬菜對象的NSArray支持。

通常,儘量保持控制器之間的數據共享最小化。讓他們引用模型對象來獲取他們的數據。

+0

謝謝alexantd,會試試看看它的感受。 – kevj 2010-09-27 21:42:28

0

嘗試使用MVC設計模式。將所有共享狀態信息放入應用程序的更高或最高級別創建的Model對象(MVC的M)中。在創建兩個視圖控制器時,讓他們可以訪問模型對象(通過在每個視圖控制器中設置一個屬性)。然後視圖控制器可以存儲和訪問所需的任何共享狀態,並且您將很好地集中調試,存儲,擴展性,重用等。

+0

感謝hotpaw2,這很有道理,會嘗試一下。 – kevj 2010-09-27 21:46:16

相關問題