2010-02-15 62 views
0

我正在研究顯示計劃的應用程序。我沒有問題顯示項目列表。我的問題涉及在新的tableview上顯示與上一次tableview的選擇有關的信息。所有的同時不必做幾百個tableviews(大名單的信息)。如何獲取tableview來動態顯示剛剛從另一個tableview中選擇的信息?

因此,在短期我怎麼告訴iPhone記得什麼是剛剛選擇,因此它可以從數據庫基於什麼只是選擇顯示的信息?

任何想法?

回答

1

這聽起來像你試圖將你的數據存儲在tableViewController中。這是一個很大的錯誤。您的視圖控制器應該只存儲接口立即操作所需的臨時數據。

相反,您需要創建一個包含所有應用程序數據的數據模型。它可以像內部數組的自定義類一樣簡單,也可以像大型核心數據圖那樣複雜。無論複雜性如何,關鍵概念是所有數據都被寫入兩個數據模型,在邏輯上進行處理並讀出數據模型。應用程序的其他部分不直接操作數據。通過這種設計,視圖控制器不必知道對方。他們只是詢問數據模型需要顯示哪些信息。

數據模型的一個關鍵特徵是它不知道如何接收數據或如何顯示或發送數據。一個結構良好的數據模型可以與GUI或命令行或任何其他人機界面一樣工作。

在你的情況,你需要通過忽略數據的顯示方式開始,而是問什麼是你需要在兩個不同的表來顯示數據裏面的邏輯關係。

例如,假設您的數據是一個簡單的名稱列表。用戶需要創建該列表的子集,然後對該子集執行一些操作。你會寫數據模型來存儲和返回名稱列表。然後你有一個子列表的屬性。然後,您將在模型中定義一個方法,將所選名稱從列表傳遞到子列表。

在您的用戶界面中,您將擁有一個表,其控制器會將列表加載到表中並記錄用戶選擇的行。然後控制器會調用數據模型方法將名稱移動到子列表中。控制器唯一知道的是如何詢問列表以及如何告訴數據模型哪個名稱在哪裏選擇。它不知道還有什麼其他用途會被用於數據。

第二控制器只知道數據模型的子表屬性以及如何告訴用戶選擇在哪個子列表名稱的數據模型。當它打開它的tableview時,它會在子表中填充名稱,但知道其他視圖做了什麼。

如果您有詳細視圖,則重複該模式。數據模型記錄了什麼名稱被任何接口選中。詳細視圖控制器只知道如何爲所選名稱和附加的數據請求數據模型。

這種設計使每個視圖控制器獨立於所有其他視圖控制器。除了導航之外,視圖控制器甚至不需要知道其他的存在。

該設計使應用程序模塊化,易於維護和擴展。你的數據總是在一個地方,並有一個對象專門用來守護它並操縱它。如果數據出現問題,您確切知道在哪裏尋找。

+0

答案與我需要的答案一樣精確和完整。 (短的實際代碼,這不是我所期待的) 非常感謝。 – JoshD 2010-02-15 21:24:53

+0

如果這是答案,請點擊旁邊的複選標記。我渴望代表點。 – TechZen 2010-02-16 13:40:14

0

您保存選擇,讓你從選擇需要的任何信息,您的數據庫調用。然後,您更新表或任何您必須顯示數據庫調用結果的視圖。

如果你給我更多關於你的應用程序的結構和目的的細節,我可以充實我的答案,如果你需要更多的幫助。

相關問題