显示新文档窗口的工作表



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

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

是否有任何现有的机制可以用于实现这一点?或者任何推荐的方法?

覆盖NSDocument子类中的initWithType:error:
从文档(请参阅 NSDocument 类参考):

您可以重写此方法以执行初始化,创建新文档时必须执行,但在打开现有文档时不应执行。

Jay 在他的回答中正确地指出,为了确定 NSDocument 子类的实例是否表示新文档而不是从文件加载的文档,必须覆盖initWithType:error:,这只会被新文档调用。但是不幸的是,从那里开始工作表是行不通的,因为在调用initWithType:error:点尚未创建窗口。

使其工作所缺少的环节是设置一个名为例如 newDocument YES initWithType:error:.那么,对[NSApp beginSheet:…]的实际调用必须在windowDidBecomeKey:中进行。此外,newDocument变量应设置为NO,以防止每次窗口再次成为键时工作表重新出现。

最新更新