Позвольте пользователю выбрать, какой тип документа открыть - PullRequest
3 голосов
/ 22 марта 2010

Я создаю приложение 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 Ответ

5 голосов
/ 22 марта 2010

Что вам нужно сделать, это переопределить - [NSDocumentController newDocument:]. NSDocumentController является частью цепочки респондента и является объектом, который в конечном итоге обрабатывает отправляемое им сообщение newDocument:.

Оттуда вы можете показать любой диалог, который вам нравится, и затем вызвать makeUntitledDocumentOfType:error:, addDocument:, makeWindowControllers и showWindows. Это то, что openUntitledDocumentAndDisplay:error: делает.

Но загвоздка в том, что NSDocumentController является синглтоном, поэтому вам нужно убедиться, что создается ваш подкласс, а не Apple. Как правило, вы делаете это, добавляя объект вашего подкласса в MainMenu.xib или любой другой NIB, загружаемый первым. Обычно этого достаточно, чтобы убедиться, что ваш подкласс создается первым и становится синглтоном.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...