Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Macos 显示新文档窗口的工作表_Macos_Cocoa_Nsdocument - Fatal编程技术网

Macos 显示新文档窗口的工作表

Macos 显示新文档窗口的工作表,macos,cocoa,nsdocument,Macos,Cocoa,Nsdocument,当用户在基于myNSDocument的Cocoa应用程序中创建新文档时,我希望新文档窗口显示一张工作表,用户可以在其中设置一些初始文档参数 但是,当通过文件>打开加载现有文件时,不应显示该表 是否有任何现有的机制,我可以钩到实现这一点?或任何建议的方法来执行此操作?在您的NSDocument子类中重写initWithType:error:。 从文档中(请参阅): 您可以重写此方法以执行初始化,该初始化在创建新文档时必须执行,但在打开现有文档时不应执行。Jay正确地指出,为了确定NSDocumen

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

但是,当通过文件>打开加载现有文件时,不应显示该表


是否有任何现有的机制,我可以钩到实现这一点?或任何建议的方法来执行此操作?

在您的
NSDocument
子类中重写
initWithType:error:

从文档中(请参阅):

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

Jay正确地指出,为了确定
NSDocument
子类的实例是否表示新文档而不是从文件加载的文档,
initWithType:error:
必须被重写,这只会对新文档调用。但是在那里启动工作表将不起作用,不幸的是,因为在调用
initWithType:error:
的点尚未创建窗口


实现此功能缺少的链接是在
initWithType:error:
中将名为
newDocument
的实例变量设置为
YES
。对
[NSApp beginSheet:…]
的实际调用必须在
WindowDiBecomeKey:
中进行。另外,应将
newDocument
变量设置为
NO
,以防止每次窗口再次变为关键点时重新显示工作表。

谢谢!在哪里调用我的工作表的
beginSheet…
方法?如果我把它放在
initWithType:error:
中,工作表将显示在自己的窗口中,而不是作为工作表附加到文档窗口;这对我很有效。。。在某些情况下,可能需要检查文档设置是否存在,然后弹出工作表,即使是已加载的文档(当然只有一次)