При каких условиях документ NSWindowController может измениться? - PullRequest
0 голосов
/ 14 февраля 2019

Мое приложение отслеживает свойство document своего NSWindowController и выполняет некоторые настройки пользовательского интерфейса, когда оно установлено.После того, как он был установлен, будет трудно перестроить пользовательский интерфейс (по внутренним причинам) в результате изменения.

Как только NSWindowController установит свое свойство document для открытого документа, в разделепри каких условиях система когда-либо изменит это свойство на новый NSDocument экземпляр (т. е. будет ли когда-либо заменен документ)?Я никогда не наблюдал, как это происходит, но я могу представить такие функции, как версии или синхронизация iCloud, в результате чего документ контроллера окна будет заменен на новый документ.Однако документация по жизненному циклу NSWindowController, похоже, не затрагивает проблему.

1 Ответ

0 голосов
/ 16 февраля 2019

Он не меняется после установки.NSWindowController получает свой документ методом addWindowController.Каждый новый / открытый документ создает свой собственный windowController.Экземпляр документа не изменяется с iCloud или revertChanges.Вам решать, как синхронизировать документ с его представлениями (перерисовка).

/* Create the user interface for this document, but don't show it yet. 
The default implementation of this method invokes [self windowNibName], 
creates a new window controller using the resulting nib name (if it is not nil), 
specifying this document as the nib file's owner, and then invokes [self addWindowController:theNewWindowController] to attach it. You can override 
this method to use a custom subclass of NSWindowController or to create more 
than one window controller right away. NSDocumentController invokes this method 
when creating or opening new documents.
*/


// e.g. override 
- (void)makeWindowControllers
{
    if ([[self windowControllers] count] == 0) {
        MainWindowController *controller = [[MainWindowController alloc] init];
        [self addWindowController:controller];
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...