2

Macアプリケーションを開発しています。アプリケーションの左側には共通のソースビューがあり、右側にはウィンドウ全体の主要部分である詳細ビューがあります。

これはマスターと詳細の関係に似ていますが、ソースビューの各要素には別の詳細ビューが必要です。実際、ソースビューの要素ごとに特定のNSViewControllerを設計しました。

これらのNSViewControllerを切り替える場合、つまり、ソースビューで別の要素を選択すると、現在のビューが削除され、新しく選択されたNSViewControllerのビューが追加されます。NSViewControllerを変更するたびに、その状態は失われます。ユーザーがそのNSViewControllerに戻ったら、最初からやり直す必要があります。

今の私の質問は、NSViewControllerの状態を保存して、状態を失うことなくこれらを切り替えて、離れた場所から続行できるようにするにはどうすればよいですか?

4

2 に答える 2

0

を使用しNSArchiverます。アーカイブ/アーカイブ解除をdealloc/initメソッドに実装し、各ビューコントローラーの状態をクラスにちなんで名付けられたファイルに保存します(ビューコントローラーポリシーごとに1つのアイテムがある場合)。それ以外の場合は、簡単な命名規則を考えて使用してください。

于 2011-06-02T20:08:56.377 に答える
0

問題に関する2つの考慮事項:

  • モデルデータをモデルクラスに保持します。つまり、モデルクラスがView Controllerを介して行われた変更を保持していれば、いつでもView Controllerを再作成し、その表現されたオブジェクトを設定できます。ビューコントローラをインスタンス化する必要がある場合は、その表現されたオブジェクトをモデルクラス(の表現)に設定します。

  • ビューをスーパービューから削除する場合、必ずしも対応するビューコントローラを解放する必要はありません。代わりに、ウィンドウコントローラー/アプリケーションデリゲート内のすべてのビューコントローラーへの強力な参照を保持できるため、実際に状態が失われることはありません。

于 2011-06-02T21:21:37.210 に答える