2009-08-18 62 views
0

(順便說一句,我不使用界面 生成器)iPhone開發 - 幫助使用模式

我有一個小項目由負責管理其他5根的UIViewController用UITabBar查看控制器,我沒有使用UITabBarController。根視圖控制器只保留一個視圖控制器實例化,當選中一個標籤欄項目時,與該選項卡關聯的視圖控制器被實例化,舊視圖控制器被移除,新視圖被添加爲子視圖,而舊視圖控制器被添加被釋放。

每個視圖控制器都有一個UIPickerView(除了有一個UIDatePicker)。當用戶從標籤1進入標籤2並回到標籤1時,我希望視圖控制器在選擇器中與之前選中的相同行進行實例化,即使它已被釋放,所以我理解它最好使用Model類的實例存儲有關View Controller狀態的信息,然後在每個View Controller中創建init方法,該方法使用給定的參數進行初始化,該參數是Model的一個實例。

那麼有人可以幫我嗎? Model類應該是什麼樣子?它應該命名爲什麼?如何使用它的實例來存儲關於一個View Controller的狀態的信息,以及另一個實例存儲關於另一個不同的View Controller的信息?我真的很想讓這個簡單的項目儘可能完美,並遵循MVC設計模式,所以我可以將所有其他標籤欄應用程序都關閉。

謝謝!

回答

0

好吧,其他任何人都在想這件事,我做了一堂課,叫它Model,並且用它做了一個帶有Download SynthesizeSingleton.h.zip宏的單例。您可以使用KVO(鍵值觀察)在模型中的內容發生變化時進行操作,瞭解該內容Here,您可以有一個UITextField委託方法,用於編輯文本字段,並在該方法中將用於文本字段的模型中的伊娃與用戶將其更改爲的新文本一起設置。

0

看看NSMutableDictionary,特別是寫入和閱讀plist文件的部分。我相信蘋果公司有一個示例應用程序在某處使用這種方法。

基本上,您將視圖層次結構寫入字典並在應用程序退出時存儲它。當您重新啓動時,請閱讀並重新配置您的視圖。

+0

我在談論什麼時候視圖釋放而不是應用程序退出時。 – mk12 2009-08-18 02:49:01

+0

您仍然可以使用這種方法,但我會建議不要在'dealloc'中執行此操作。在'-viewDidUnload'或其他方法中保存,然後在'-viewDidLoad'或'-viewWillAppear:' – jbrennan 2009-08-18 03:15:54

+0

中恢復狀態我想使用模型類,而不是屬性列表文件。 – mk12 2009-08-18 04:24:16