显示新文档窗口的工作表

时间:2012-12-02 14:59:06

标签: macos cocoa nsdocument

当用户在我基于NSDocument的Cocoa应用程序中创建新文档时,我希望新文档窗口显示一个工作表,用户可以在其中设置一些初始文档参数。

但是,当通过文件>加载现有文档时,不会显示此工作表。打开。

我是否可以使用任何现有机制来实现此目的?或者任何推荐的方法吗?

2 个答案:

答案 0 :(得分:3)

覆盖initWithType:error:子类中的NSDocument 从文档(参见NSDocument Class Reference):

您可以覆盖此方法以执行在创建新文档时必须执行的初始化,但在打开现有文档时不应该这样做。

答案 1 :(得分:3)

Jay在his answer中正确地指出,为了确定NSDocument子类的实例是代表新文档而不是从文件加载,initWithType:error:必须是重写,只调用新文档。但遗憾的是,在那里开始工作表是行不通的,因为在initWithType:error:点上尚未创建窗口。

实现此功能的缺失链接是设置一个名为eg的实例变量。 newDocument中的YESinitWithType:error:。然后,对[NSApp beginSheet:…]的实际调用必须在windowDidBecomeKey:中进行。此外,newDocument变量应设置为NO,以防止每次窗口再次变为密钥时再次出现该表格。