質問

私は、タブ付きインターフェイスを介して1つのウィンドウに複数のドキュメントを持っている可能性のあるアプリケーションを書きたいです。私は、NSDocumentのアーキテクチャ(ココアドキュメントベースのアプリケーションテンプレートを)避けるべきでしょうか?私の知る限り、それは文書ごとに1つのだけまたは複数のウィンドウをサポートしていますが、その逆はない。

私はしばらくの間、この問題と格闘していると、すでにNSDocumentのアーキテクチャに自分のアプリケーションの多くを構築してきましたが、私は単一のウィンドウで複数のドキュメントを関連付けるための良い方法を把握することはできません。

編集:私は基本的なドキュメントウィンドウに加えて、プロジェクトのドキュメントウィンドウを持っていると思います。複雑さのこのレベルでは、それはまだNSDocumentのアーキテクチャをハッキング価値があるだろうか?アップルは、NSDocumentのアーキテクチャを使用して(このように動作する)のXcodeを書きましたか。

役に立ちましたか?

解決

私は、単一のウィンドウにNSDocumentのアプリを試してみましたshoehorning私は戻って、ドキュメントアーキテクチャ片をリファクタリングし、数ヶ月後、数年前にインターフェースをタブ付き、そしてそのイライラ終わりました。それは不可能ではないのですが、あなたは周りの最終結果がかろうじて適切なNSDocumentのアプリに似ているので、多くの問題を働いてしまいます。それはちょうどCocoaフレームワークを破壊するためにコードの多くで終わるよりも、ちょうどあなたが必要なのでしょビットを書き換える方が良いでしょう。

他のヒント

私は自分自身を検索するの少しを行っている - 私はドキュメントを切り替えることができますサイドバーで、1つのウィンドウに提示したい異なる独立した文書 -

私は、プロジェクトの同じ種類を持っています。

私はちょうどCocoadevのの<のhref = "https://github.com/jnozzi/cocoadev.com/blob/master/markdown/DocumentBasedAppWithOneWindowForAllDocuments.md" のrel = "nofollowをnoreferrer" を読んで面白いリードを見つけました>ドキュメントベースのアプリケーションすべての文書のの参照にウインドウ付き。 NSDocumentのを使用して行くには非常に実行可能な方法であることを、MikeTrentの答えから、表示されます。あなただけのNSDocumentControllerをサブクラス化する必要があります。

私はまた、 Abhiのアイデアには、ボーダレス子ウィンドウを使用したいです。

のNSDocumentベースのアーキテクチャを使用すると、この場合は必ずしも悪いアイデアではありません。しかし、それはhaqueryのかなりが必要な場合があります。

あなただけではなく、サブクラスのNSDocumentに持っていることは非常に可能性が高いですが、また、それは、よりめったに兄弟のNSDocumentControllerをサブクラス化していないです。これが完了すると、あなたがどんな方法でドキュメントの「Windows」をラップすることができ、-makeWindowControllersおよび他のウィンドウ関連のメソッドへの呼び出しをハイジャックし、回避するための簡単な問題くださいこと、それでもdocument-の利点を保持しなければなりませんベースのアプリケーションます。

私はまだ試したけどに予定されていない別の技術は、各ドキュメントのボーダレスウィンドウを持つことです。このように一つの文書は、可視であってもなくてもよい一つの窓を有している。

次に、その間ボーダレスドキュメントウィンドウ/ウィンドウが表示されて切り替える実際のウィンドウの境界を含むラッパー・ウィンドウ、および任意のコントロールを持っています。ドキュメントウィンドウの両方を確実にラッパーの子ウィンドウは、ウィンドウが移動されたときに/最小に連結されている/ /など閉じます。

は、それぞれフチ無し文書のウィンドウについて、ラッパー・ウィンドウは、サイズを変更するとき、ドキュメントウィンドウのサイズを変更し、また、レスポンダチェーンにドキュメントウィンドウのビュー(プレースホルダビューに送信されたイベントを注入するプレースホルダビューを有し、送信されます)プレースホルダの親ビューに渡される前に、ドキュメントウィンドウのビューにます。

そこに動作するようにいくつかのマイナーな詳細はまだですが、私はこのアプローチはうまく動作すると思います。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top