繁体   English   中英

在基于文档的应用程序中管理上下文相关的NSMenu

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM