Приложение на основе документов, окно предварительной инициализации (введите серийный номер, купить, пробную версию) - PullRequest
0 голосов
/ 31 марта 2010

Мне нужно создать несколько окон перед загрузкой NSDocument или создать окно, которое блокирует окно NSDocument и верхнее меню.

Я пробовал несколько решений, но они не работали правильно.

  1. модальное окно, одно за другим. были некоторые проблемы с Async URLConnection, и некоторые другие проблемы с моим содержимым NSDocument.

  2. Я создал собственный MainMenu.xib без меню, которое открывает мои окна предварительной инициализации. здесь я обнаружил некоторые другие проблемы, когда файл (связанный с моим приложением) открывается - окно документа инициализируется. Здесь я попытался создать подкласс NSDocumentController, но не нашел способа приостановить «открытый документ». (Я хочу, чтобы документ был открыт в любом случае, но только после того, как будут закрыты окна предварительной инициализации).

Так каков правильный способ сделать это?

Ответы [ 2 ]

0 голосов
/ 02 апреля 2010

Итак, правильный ответ - реализовать:
* приложение: openFiles:
* applicationShouldOpenUntitledFile:

и реализовать собственное создание документов. так у меня и получилось.

MyDocument* document = [[MyDocument alloc] 
                             initWithContentsOfURL:fileURL 
                                            ofType:[fileName pathExtension] 
                                             error:nil
                       ];
  if(document)
  {
     [[NSDocumentController sharedDocumentController] addDocument:document];
     [document makeWindowControllers];
     [document showWindows];
 }

конечно, вам нужно написать код обработки ошибок.

0 голосов
/ 01 апреля 2010

Внедрите applicationShouldOpenUntitledFile: в свой делегат приложения, чтобы он возвратил NO, если пользователь сначала должен пройти через диалог еще не зарегистрирован.

В методах действий для кнопок «Пробная» и «Подтвердить регистрацию» создайте документ без названия самостоятельно (отправив необходимое сообщение контроллеру документов).

...