开发者

Let the user choose what type of document to open

I'm creating an NSDocument application, with two document types: Website and Web Service. This is in my 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&g开发者_如何转开发t;
   <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>

Now, whenever the user opens the application, selects the 'New' item from the menubar, or clicks the Dock icon while there are no open windows, I want to show a window with two options, each for one of the document types. Can anyone help me with this? Thanks


What you need to do is override - [NSDocumentController newDocument:]. NSDocumentController is part of the responder chain and is the object that eventually handles the newDocument: message it sends.

From there, you can show whatever dialog you like and then call makeUntitledDocumentOfType:error:, addDocument:, makeWindowControllers and showWindows. This is what openUntitledDocumentAndDisplay:error: does.

But the catch is that NSDocumentController is a singleton, so you need to make sure it's your subclass that gets instantiated, not Apple's. Typically, you do this by adding an object of your subclass to MainMenu.xib or whatever NIB gets loaded first. That's usually good enough to make sure that your subclass gets created first and becomes the singleton.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜