繁体   English   中英

NSDocument中的窗口出口在哪里

[英]Where is the window outlet in an NSDocument

我的应用程序已从非基于文档的应用程序转换为基于文档的应用程序。 我通过创建NSDocument的子类Document做到这一点。 我还创建了一个Document.xib并将其“文件所有者”设置为Document

现在在Document.xib ,我可以看到其“文件所有者”中有一个window出口。 我没有在Document定义的window出口。 它从何而来? 我猜它来自超类NSDocument ,但是我无法访问Document该变量。 奇怪的window风口怎么了?

看看-[NSDocument setWindow:]的文档

如果文件的所有者窗口出口已连接到该笔尖,则在加载此文件为其文件所有者的任何笔尖期间,将自动调用此方法。 您不应直接调用此方法,通常也不会覆盖它。

NSDocument不会直接处理NSWindow ,但是会保留一个NSWindowController列表,您可以通过-[NSDocument windowControllers]方法访问。 我的猜测是,调用setWindow:时,它将窗口包装在新的NSWindowController并将其添加到列表中。

您应该可以使用以下内容访问窗口:

NSWindowController* controller = self.windowControllers.lastObject;
NSWindow* window = controller.window;

我刚刚创建了一个新项目对其进行测试,并且可以正常工作:

- (void)windowControllerDidLoadNib:(NSWindowController *)aController {
    [super windowControllerDidLoadNib:aController];
    NSLog(@"%@", [self.windowControllers.lastObject window]);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM