2011-12-07 22 views
1

我正在開發一個iPad應用程序,它基本上是一系列用戶指令以模擬真實生活系統測試,並且能夠在組件出現故障時對每個視圖進行修改(指出需要的問題待解決)。重新加載時保留視圖狀態

我遇到的問題是,視圖的默認行爲似乎是,當我通過層次結構前進時,它保留每個視圖的狀態,但是如果我前進一步然後再向前移動,它將會有重置屏幕。

我想要做的是讓每個視圖保存其狀態,而不管用戶如何離開該屏幕,以便他們可以確信即使他們需要返回到上一步仍保留其工作。

有沒有辦法做到這一點?或者我需要從根本上重新考慮我的設計?

回答

1

您需要您的視圖的模型對象。這些可以像字典一樣簡單,或作爲每個視圖的自定義類參與。

每個視圖的控制器必須更新其關聯模型,並在視圖離開前通過其界面進行更改。當它重新出現時,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]; 
} 
+0

謝謝你的出發點。我一直在閱讀你提供的文檔,但我仍然很難理解這個概念。我一直在翻閱我已有的幾本書,但我承認我沒有很多MVC的經驗。你會有任何代碼示例可以說明這一點,特別是從視圖更新模型嗎?我原以爲這就是我一直在做的事情。 – user1084669

+0

我已經添加了一小段代碼。不知道這將是多麼有幫助。 –

相關問題