2011-02-02 16 views
3

私の最初のObjC/Cocoaアプリケーション..と私はかなり混乱しています。マルチコントローラのココアアプリを理解するのに役立つ

大学生がキャンパスプリンタをインストール/アンインストールするためのステータスアイテムアプリを作成しています。ステータス項目のメニューから簡単にアクセスできるお気に入りのプリンタリストを設定できます。これまで私はメニュー内のすべてを動作させていました。今、自分の好みのリストを管理できる環境設定ウィンドウを作成しようとしています。

私は、PrinterDataのNSArrayに格納されたPrinterオブジェクトを束ねています。 Predicateメソッドを使用すると、お気に入りのプリンタオブジェクトではなくお気に入りの配列を取得できます。

PrinterControllerは、ステータス項目メニューにオブジェクトを描画します。

PreferenceControllerには、お気に入りのビューを含むいくつかのビュー(ツールバーアイテム)を持つペン先があります。すべてのプリンタをスプリットビュースタイルで表示することを決めました。名前は左側のNSTableViewに、右側の追加データが表示されます。また、お気に入りのプリンタを制御するためのチェックボックスを右側に表示し、通知を使用してステータス項目メニューを再描画できるようにします。たぶん左に太字のフォントバインディングがあるかもしれません。PrinterDataのオブジェクトを表示するために、TableContentのコンテンツをArrayControllerにバインドしています。これもnibのオブジェクトです。

私はこれをどのように整理したかについていくつかの批判を得ることができますか?任意の側面のための提案?

答えて

1

NSWindowControllerを使用して、複数のNSViewControllerオブジェクトを管理できます。 AppleはMVCパターンを示すexcellent example hereを持っています。

Appleの例に続いて、任意のビューコントローラ以内にあなたは、このような別のビューコントローラに切り替えることができます。

MainWindowController* windowController = [[[self view] window] windowController]; 
[windowController changeViewController:kLoginViewController]; 

を基本的にアプリケーションデリゲートは、あなたがしたい希望ビューのView Controllerを作成し、ウィンドウのコントローラを作成します持ってる。このようにして、ビューを追加または削除する必要がある場合は、そのプロセスは非常に困難です。

複数のビューから同じデータにアクセスする場合は、Core Data Applicationsを調べる必要があります。代わりに、アプリケーションのオブジェクトのNSArrayをアプリケーションデリゲートに格納し、それらの参照をオブジェクトにアクセスする必要があるビューに渡すこともできますが、そのアプローチではCore Dataを推奨します。

+0

提案していただきありがとうございます。同じウィンドウ内の別のビューに切り替えることは、私が探していたものではありませんが、良いコード例が表示されるはずです。 – joraff

+0

また、データを格納するためにシングルトンを使用するのはどうですか?私はCoreDataが必要以上にあるかもしれないと思います。 – joraff

+1

ウィンドウコントローラーを使用して複数のウィンドウを管理することもできます。データを共有するためのシングルトンもうまくいくでしょう。 – David

関連する問題