[英]Managing a context sensitive NSMenu in a document-based app
我有一个基于文档的应用程序,其子菜单位于上下文相关的“文件”菜单下。 我正在尝试找出适当的方法来管理它,我想我知道答案了……但是要确保我没有遗漏明显的/简单的东西。
该文件有一个NSWindowController
被实例化的每个文档,并且是NSWindowDelegate
该实例。 在NSWindowController
的-init
和-dealloc
方法中,我可以创建和删除NSMenu
。 但是由于菜单是应用程序的全局菜单,而不是特定于单个文档的菜单(或者我认为),因此在通过NSWindowDelegate
的-windowDidBecomeMain
和-windowWillResignMain
切换文档时,我还必须删除菜单并重新创建菜单。也许是类似的...关键方法,对此我有点模糊)
另外,我需要使NSWindowController
成为NSMenu
的委托,以实现-menuNeedsUpdate
(同样,使委托与当前活动的NSWindowController
保持同步)。
这是正确的方法吗?
我用于上下文相关菜单的一个技巧是利用validateMenuItem进行更多操作,而不仅仅是验证menuItems。
对于您的情况,可以使应用程序委托菜单的委托,并在validateMenuItem内部,如果菜单项是您需要更改的菜单项,则进行更改。 调用[NSDocumentManager sharedManager]以获取当前活动文档的实例,并从中获取所需的任何信息以填充菜单项。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.