Macos 显示新文档窗口的工作表
当用户在基于myMacos 显示新文档窗口的工作表,macos,cocoa,nsdocument,Macos,Cocoa,Nsdocument,当用户在基于myNSDocument的Cocoa应用程序中创建新文档时,我希望新文档窗口显示一张工作表,用户可以在其中设置一些初始文档参数 但是,当通过文件>打开加载现有文件时,不应显示该表 是否有任何现有的机制,我可以钩到实现这一点?或任何建议的方法来执行此操作?在您的NSDocument子类中重写initWithType:error:。 从文档中(请参阅): 您可以重写此方法以执行初始化,该初始化在创建新文档时必须执行,但在打开现有文档时不应执行。Jay正确地指出,为了确定NSDocumen
NSDocument
的Cocoa应用程序中创建新文档时,我希望新文档窗口显示一张工作表,用户可以在其中设置一些初始文档参数
但是,当通过文件>打开加载现有文件时,不应显示该表
是否有任何现有的机制,我可以钩到实现这一点?或任何建议的方法来执行此操作?在您的
NSDocument
子类中重写initWithType:error:
。从文档中(请参阅): 您可以重写此方法以执行初始化,该初始化在创建新文档时必须执行,但在打开现有文档时不应执行。Jay正确地指出,为了确定
NSDocument
子类的实例是否表示新文档而不是从文件加载的文档,initWithType:error:
必须被重写,这只会对新文档调用。但是在那里启动工作表将不起作用,不幸的是,因为在调用initWithType:error:
的点尚未创建窗口
实现此功能缺少的链接是在
initWithType:error:
中将名为newDocument
的实例变量设置为YES
。对[NSApp beginSheet:…]
的实际调用必须在WindowDiBecomeKey:
中进行。另外,应将newDocument
变量设置为NO
,以防止每次窗口再次变为关键点时重新显示工作表。谢谢!在哪里调用我的工作表的beginSheet…
方法?如果我把它放在initWithType:error:
中,工作表将显示在自己的窗口中,而不是作为工作表附加到文档窗口;这对我很有效。。。在某些情况下,可能需要检查文档设置是否存在,然后弹出工作表,即使是已加载的文档(当然只有一次)