2011-12-07 10 views
1

実際のシステムテストを模倣するための基本的な一連のユーザ指示であるiPadアプリケーションを開発しています。コンポーネントが失敗した場合に各ビューを修正する機能が必要です解決する)。リロード時のビューステートの保持

私が抱えている問題は、ビューのデフォルトの動作は、階層を順方向に進むにつれて、各ビューの状態を保持しているように見えますが、前進して再び前進すると画面をリセットします。

私がしたいのは、ユーザーがその画面をどのように残しているかにかかわらず、各ビューに状態を保存させることです。前の手順に戻る必要があっても作業が保存されると確信できます。

これを実行する方法はありますか?または私のデザインを根本的に再考する必要がありますか?

答えて

1

ビューにはモデルオブジェクトが必要です。これらは、辞書と同様にシンプルにすることも、各ビューのカスタムクラスに含めることもできます。

各ビューのコントローラは、ビューが画面に表示されないようにする前に、インターフェイスを介した変更を関連付けられたモデルに更新する必要があります。再表示されると、VCはモデルからの情報で表示を更新します。

これは、Model-View-Controllerの支配的なココアパラダイムに従います(Cocoa Design Patternsも参照)。あなたのビューは情報を表示し、モデルは情報を格納し、コントローラはそれらの2つの間で仲介し翻訳します。

ビューからモデルを更新する方法は、モデルのデザインによって大きく異なります。ここでは参考になるかもしれないモックアップがあります。 xFieldという名前のものはすべてUITextFieldになるアウトレットです。

// 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

ちょっとしたスニペットを追加しました。どのように役立つかわからない。 –

関連する問題