我正在開發一個iPad應用程序,它基本上是一系列用戶指令以模擬真實生活系統測試,並且能夠在組件出現故障時對每個視圖進行修改(指出需要的問題待解決)。重新加載時保留視圖狀態
我遇到的問題是,視圖的默認行爲似乎是,當我通過層次結構前進時,它保留每個視圖的狀態,但是如果我前進一步然後再向前移動,它將會有重置屏幕。
我想要做的是讓每個視圖保存其狀態,而不管用戶如何離開該屏幕,以便他們可以確信即使他們需要返回到上一步仍保留其工作。
有沒有辦法做到這一點?或者我需要從根本上重新考慮我的設計?
我正在開發一個iPad應用程序,它基本上是一系列用戶指令以模擬真實生活系統測試,並且能夠在組件出現故障時對每個視圖進行修改(指出需要的問題待解決)。重新加載時保留視圖狀態
我遇到的問題是,視圖的默認行爲似乎是,當我通過層次結構前進時,它保留每個視圖的狀態,但是如果我前進一步然後再向前移動,它將會有重置屏幕。
我想要做的是讓每個視圖保存其狀態,而不管用戶如何離開該屏幕,以便他們可以確信即使他們需要返回到上一步仍保留其工作。
有沒有辦法做到這一點?或者我需要從根本上重新考慮我的設計?
您需要您的視圖的模型對象。這些可以像字典一樣簡單,或作爲每個視圖的自定義類參與。
每個視圖的控制器必須更新其關聯模型,並在視圖離開前通過其界面進行更改。當它重新出現時,VC將用來自模型的信息更新顯示。
這遵循主要的可可範例Model-View-Controller(另見:Cocoa Design Patterns);您的視圖會顯示信息,模型存儲信息以及控制器在兩者之間進行調解和轉換。
如何從視圖更新模型在很大程度上取決於模型的設計。這是一個可能或可能不會有幫助的模型。所有名爲xField
的東西都是UITextField
s的網點。
// When the view is taken off screen
- (void) viewWillDisappear {
// Assume that when created, view controller is given a pointer
// to the relevant model object (probably by the previous view
// controller)
[model setNameOfHorse:[[self horseNameField] text]];
NSUInteger newBetValue;
newBetValue = [[dollarValueFormatter
numberFromString:[[self betField] text]]
unsignedIntegerValue];
[model setBet:newBetValue];
[model setNote:[[self noteField] text];
}
謝謝你的出發點。我一直在閱讀你提供的文檔,但我仍然很難理解這個概念。我一直在翻閱我已有的幾本書,但我承認我沒有很多MVC的經驗。你會有任何代碼示例可以說明這一點,特別是從視圖更新模型嗎?我原以爲這就是我一直在做的事情。 – user1084669
我已經添加了一小段代碼。不知道這將是多麼有幫助。 –