首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >设置多个NSWindowController对象和NSDocument

设置多个NSWindowController对象和NSDocument
EN

Stack Overflow用户
提问于 2015-10-18 16:28:06
回答 2查看 939关注 0票数 0

我是NSDocument体系结构的新手,我希望为单个文档设置多个窗口(以及多个NSWindowController对象)。

据我所知,NSDocument实际上是为了使用单个窗口而创建的,而且似乎在后面增加了多个窗口的能力。例如,似乎NSDocument应该始终是任何窗口的NIB文件的所有者。但是,如果我想将窗口控制器从文档中分离出来呢?

例如,在NSDocument子类中,我目前正在使用以下代码:

代码语言:javascript
复制
- (void)makeWindowControllers {
    [self setMyWindowController1:[[WindowControllerType1 alloc] initWithWindowNibName:@"MyWindow" owner:self]];
    [self addWindowController:[self MyWindowController1]];
}

但是NIB文件“MyWindow”的文件所有者被设置为NSWindowController子类(WindowControllerType1),而不是我的NSDocument子类。

我认为,如果我将NIB文件的所有者设置为NSDocument子类,但我的所有出口链接都中断了,并且我不知道如何链接到NSWindowController子类(WindowControllerType1),这是可以纠正的,因为典型的操作过程(据我所知)也是使NSDocument成为窗口控制器委托,这是我想避免的!

有什么建议吗?

编辑:

让我澄清并补充一些新的资料。我知道Apple在使用WindowController的document属性方面的立场。但是,由于我计划在每个窗口中有更多的嵌套NSViews,为了实现这一点,我希望避免通过大的视图链传递文档。

问题不一定是这条链。大多数情况下,当[[NSDocumentController sharedDocumentController] currentDocument]总是为零时,NSDocument的“免费”功能似乎都不起作用,比如撤销/重做。这是我需要解决的主要问题。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-10-19 00:00:50

据我所知,NSDocument实际上是为了使用单个窗口而创建的,而且似乎在后面增加了多个窗口的能力。

不,makeWindowControllers可在OSXv10.0及更高版本中使用。

但是,如果我想将窗口控制器从文档中分离出来呢?

窗口控制器拥有NIB。

有什么建议吗?

[self setMyWindowController1:[[WindowControllerType1 alloc] initWithWindowNibName:@"MyWindow"]]

NSWindowController有一个属性document,它由addWindowController:设置。

票数 1
EN

Stack Overflow用户

发布于 2015-10-18 17:26:19

使用NSWindowController的document属性而不是currentDocument。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33200326

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档