NSWindowController的文档在什么条件下可以更改?

问题描述 投票:1回答:1

我的应用程序观察其documentNSWindowController属性,并在设置时执行一些UI设置。一旦设置,由于更改,很难重建UI(由于内部原因)。

一旦NSWindowController将其document属性设置为打开的文档,系统在什么条件下将该属性更改为新的NSDocument实例(即文档是否会被换出)?我从来没有观察过它,但我可以想象版本或iCloud同步等功能导致窗口控制器的文档被换成新文档。但是,关于NSWindowController生命周期的文档似乎没有涉及到这个问题。

cocoa appkit nsdocument nswindowcontroller
1个回答
2
投票

一旦设置它就不会改变。 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];
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.