当用户在基于NSDocument
的Cocoa应用程序中创建新文档时,我希望新文档窗口显示一个工作表,用户可以在其中设置一些初始文档参数。
但是,当通过"文件>打开"加载现有文档时,不会显示此工作表。
是否有任何现有的机制可以用于实现这一点?或者任何推荐的方法?
覆盖NSDocument
子类中的initWithType:error:
。
从文档(请参阅 NSDocument 类参考):
您可以重写此方法以执行初始化,创建新文档时必须执行,但在打开现有文档时不应执行。
Jay 在他的回答中正确地指出,为了确定 NSDocument
子类的实例是否表示新文档而不是从文件加载的文档,必须覆盖initWithType:error:
,这只会被新文档调用。但是不幸的是,从那里开始工作表是行不通的,因为在调用initWithType:error:
点尚未创建窗口。
使其工作所缺少的环节是设置一个名为例如 newDocument
YES
initWithType:error:
.那么,对[NSApp beginSheet:…]
的实际调用必须在windowDidBecomeKey:
中进行。此外,newDocument
变量应设置为NO
,以防止每次窗口再次成为键时工作表重新出现。