2

つまり、真剣に、私はまったく理解していません。

私はこのアプリを書いていますが、ウィンドウの主要部分のコンテンツを変更するサイドバーが必要です。

ViewController、WindowController などに関するいくつかのドキュメントを読みました。

では、この例を見てみましょう。

左側のシンプルなメニューと、サブメニューを含む場合と含まない場合がある中央のメインビューで構成されるこのアプリがあります (表示しているページに基づいて)。これらのビューを同じウィンドウに表示し、互いに独立させたいと考えています。メイン画面はそのコンテンツを表示するだけで、メニューやウィンドウなどについては何も知らないはずです.

ユーザーに表示したいビューごとに1つずつ、いくつかのViewControllerを作成しました。それぞれに、表示したいインターフェイスを描画できるXibファイルがあります。

ユーザーが左側のサイズで選択したものに基づいてメイン ビューを変更するにはどうすればよいですか? コード自体について話しているのではなく、コードの背後にあるロジックがどのように機能するかについて話しているのです。

ウィンドウコントローラーはその部分について知っているべきですか? メイン ウィンドウを変更できるように、メイン メニューにメイン ウィンドウを含める必要がありますか? メイン ウィンドウでプレースホルダー (カスタム ビュー) を使用して他のビューを挿入する必要がありますか?

4

1 に答える 1

2

メインビューをメニューやウィンドウなどから独立させたいというあなたの希望は良いものです。もちろん、これを行う方法は 1 つではありませんが、メニューから入力を受け取り、メイン ビュー エリアを正しいビューに切り替えるオブジェクトをウィンドウ コントローラーにすることをお勧めします。

ビューの切り替えを実際に処理するには、まさにこの目的のために作成された NSTabView を使用します。Interface Builder で設定して、実際にはタブを描画せず、ユーザーには「見えず」、プログラムでタブを切り替えるだけにすることができます。

タブ ビューの 1 つのハングアップは、複数のビュー コントローラーのビューを切り替えるように本質的に設計されていないことです (NSViewController は、Cocoa の歴史の中で比較的新しいクラスです)。そのため、ウィンドウ コントローラーにビュー コントローラーへの (強力な) 参照を保持させ (つまり、それらを所有させ)、必要に応じてビューをタブ ビューに渡すだけにする必要があります。私は多くのアプリでこの正確なアプローチを使用しており、うまく機能しています。

于 2013-07-08T16:35:04.157 に答える