当用户在我基于NSDocument
的Cocoa应用程序中创建新文档时,我希望新文档窗口显示一个工作表,用户可以在其中设置一些初始文档参数。
但是,当通过文件>加载现有文档时,不会显示此工作表。打开。
我是否可以使用任何现有机制来实现此目的?或者任何推荐的方法吗?
答案 0 :(得分:3)
覆盖initWithType:error:
子类中的NSDocument
从文档(参见NSDocument Class Reference):
您可以覆盖此方法以执行在创建新文档时必须执行的初始化,但在打开现有文档时不应该这样做。
答案 1 :(得分:3)
Jay在his answer中正确地指出,为了确定NSDocument
子类的实例是代表新文档而不是从文件加载,initWithType:error:
必须是重写,只调用新文档。但遗憾的是,在那里开始工作表是行不通的,因为在initWithType:error:
点上尚未创建窗口。
实现此功能的缺失链接是设置一个名为eg的实例变量。 newDocument
中的YES
到initWithType:error:
。然后,对[NSApp beginSheet:…]
的实际调用必须在windowDidBecomeKey:
中进行。此外,newDocument
变量应设置为NO
,以防止每次窗口再次变为密钥时再次出现该表格。