2

私は Cocoa を初めて使用します。これらの質問は非常に基本的なものかもしれません。現在、「アプリ」、「オプション」、「統計」を切り替えることができる NSTabView を使用する Mac アプリケーションを開発しています。

ここでのアプローチは、AppControler、OptionsController、および StatisticsController の 3 つのコントローラー クラスを作成することです。それらのオブジェクトを .xib ファイルに作成し、対応する UI 要素を正しいコントローラー オブジェクトにリンクしました。

私の質問は次のとおりです: - NSTabView に複数のコントローラー オブジェクトを使用するのは正しい方法ですか? - AppController にオプションに関する情報を取得させたい場合、AppController と OptionsController 間の通信を行うにはどうすればよいですか?

ありがとう!

4

3 に答える 3

5

Cocoa の開発を始めたとき、私はこの種の質問にかなり苦労しました。結局、本当の答えはないことがわかりました。Cocoa と Objective-C では、猫の皮を剥ぐ方法が非常に多いため、最終的には自分次第です。

すべてのコントローラーに Nib がロードされるため、最も簡単な方法は、各コントローラーに、通信したい他のコントローラー オブジェクト用のアウトレットを作成することです。Interface Builder でコンセントを接続すれば準備完了です。

これは私の考えでは簡単で効果的な解決策です。コントローラー間で循環参照が発生することになりますが、Objective-C の Nib ロード/アンロード コードがそのすべてを処理します。

于 2011-10-09T12:28:26.640 に答える
1

タブ ビューの場合、通常はそのウィンドウ内のすべてのタブに対して 1 つのコントローラーを作成するだけですが、3 つまたは 4 つを超えるタブを使用している場合はおそらく分割し、各タブでアクションを処理するためにかなりの量のコードが必要になります。そしてアウトレット。

于 2011-10-11T03:00:10.240 に答える
0

通常、MVC パラダイムが使用されます。あなたの場合、1つのコントローラーが何らかの設定を作成または変更している場合、何らかの方法でモデルに設定し(一部のユーザーデフォルトセットと同じくらい簡単かもしれません)、それが他の場所で使用されている場合はモデルから読み取ります。

于 2011-10-09T12:39:13.903 に答える