3

Web サイトと Web サービスの 2 つのドキュメント タイプを持つ NSDocument アプリケーションを作成しています。これは私のInfo.plistにあります:

<key>CFBundleDocumentTypes</key>
 <array>
  <dict>
   <key>CFBundleTypeName</key>
   <string>Website</string>
   <key>CFBundleTypeExtensions</key>
   <array>
    <string>website</string>
   </array>
   <key>LSTypeIsPackage</key>
   <true/>
   <key>CFBundleTypeRole</key>
   <string>Editor</string>
   <key>LSHandlerRank</key>
   <string>Default</string>
   <key>NSDocumentClass</key>
   <string>AWWebSite</string>
  </dict>
  <dict>
   <key>CFBundleTypeName</key>
   <string>Web Service</string>
   <key>CFBundleTypeExtensions</key>
   <array>
    <string>webservice</string>
   </array>
   <key>LSTypeIsPackage</key>
   <true/>
   <key>CFBundleTypeRole</key>
   <string>Editor</string>
   <key>LSHandlerRank</key>
   <string>Default</string>
   <key>NSDocumentClass</key>
   <string>AWWebService</string>
  </dict>
 </array>

ここで、ユーザーがアプリケーションを開いたとき、メニューバーから [新規] 項目を選択したとき、または開いているウィンドウがないときに Dock アイコンをクリックしたときはいつでも、ドキュメント タイプの 1 つに対応する 2 つのオプションを含むウィンドウを表示したいと考えています。誰でもこれで私を助けることができますか?ありがとう

4

1 に答える 1

5

あなたがする必要があるのはオーバーライド- [NSDocumentController newDocument:]です。レスポンダ チェーンの一部であり、送信するメッセージNSDocumentControllerを最終的に処理するオブジェクトです。newDocument:

そこから、好きなダイアログを表示してmakeUntitledDocumentOfType:error:、 、addDocument:makeWindowControllersおよびを呼び出すことができますshowWindows。これが何をするかopenUntitledDocumentAndDisplay:error:です。

しかし、キャッチはNSDocumentControllerシングルトンであるため、インスタンス化されるのはAppleのものではなく、あなたのサブクラスであることを確認する必要があります。通常、これを行うには、サブクラスのオブジェクトを MainMenu.xib または NIB が最初に読み込まれるものに追加します。通常、サブクラスが最初に作成されてシングルトンになることを確認するには、これで十分です。

于 2010-03-22T16:29:14.837 に答える