1

ドキュメントベースのアプリを開発しています。各ドキュメントには 3 つのウィンドウ (したがって 3 つのウィンドウ コントローラー) があります。3 つのウィンドウのうち 2 つが、開いているさまざまなドキュメント間で共有されるように設定したいと思います (必要に応じてビューを交換します)。これは可能ですか?誰かが私を正しい方向に向けることができますか (ドキュメントまたは例)?

ありがとう!

4

3 に答える 3

2

その場合、これらの共有ウィンドウ コントローラーはどのドキュメントにも所有されるべきではありません (各ドキュメントには「共有」ウィンドウの独自のペアがあるため)。インスペクターのように、ウィンドウ パネルを作成することもできます。

新しいメイン ウィンドウには別のドキュメントが含まれている可能性があるため、各コントローラーでどのウィンドウがメインであるかを追跡し、メイン ウィンドウが変更されたときにそれに応じてウィンドウを更新する必要があります。

Inspector ウィンドウの作成方法に関するほとんどすべてのチュートリアルがここで役に立ちます。

于 2010-11-01T06:23:45.320 に答える
0

可能ですが、あなたの側からは取るに足らない量の作業が必要になります。要約すると、これがあなたがする必要があることです:

  • setDocument:ウィンドウコントローラでオーバーライドし、各ドキュメントへの関連付けを維持します。
  • ウィンドウを閉じる前に、各ウィンドウコントローラ(NSWindowController)がドキュメントとの関連付けを解除していることを確認してください。ウィンドウ内のビューを処理している可能性のある各ビューコントローラについても同じことが言えます。
  • ドキュメントコントローラ()をサブクラス化し、NSDocumentControllerドキュメントのクローズを処理して、ドキュメントを閉じる前にマルチドキュメントウィンドウがドキュメントから切り離されていることを確認します。はシングルトンであるため、デフォルトのインスタンスを置き換えるためにファイルにNSDocumentControllerインスタンスを追加する必要があります。MainMenu.xib

マルチドキュメントウィンドウコントローラーのサポートを追加する方法については、こちらのステップバイステップガイドをご覧ください。

于 2013-02-28T12:44:13.253 に答える
0

-makeWindowControllersサブクラスでオーバーライドして必要なコントローラーを作成し、NSDocument サブクラスをNSDocument呼び出して共有ウィンドウ コントローラーを追加する必要があるようです。-addWindowController:

まだこれを行う必要はありませんが、これらは私が検討している方法です。

Apple の NSDocument クラス リファレンスから:

makeWindowControllers

サブクラスは、このメソッドをオーバーライドして、ドキュメントの初期ウィンドウ コントローラーを作成できます。

- (void)makeWindowControllers

討論

基本クラスの実装は、windowNibName を使用して NSWindowController オブジェクトを作成し、windowNibName が名前を返す場合はドキュメントをファイルの所有者として作成します。このメソッドをオーバーライドして独自のウィンドウ コントローラーを作成する場合は、必ず addWindowController: を使用して、作成後にそれらをドキュメントに追加してください。

このメソッドは NSDocumentController の open... メソッドによって呼び出されますが、場合によっては直接呼び出すこともできます。

于 2010-11-01T06:24:32.000 に答える