0

我有一个基于文档的应用程序,其中包含上下文相关的文件菜单的子菜单。我试图找出管理它的适当方法,我想我知道答案......但想确保我没有遗漏一些明显/更简单的东西。

该文档具有NSWindowController为每个文档实例化的 ,并且是该NSWindowDelegate实例的 。在NSWindowController's-init-dealloc方法中,我可以创建和删除NSMenu. 但是由于菜单对应用程序是全局的,而不是特定于单个文档(或者我认为),我还必须删除菜单并在通过NSWindowDelegate's-windowDidBecomeMain-windowWillResignMain (或者可能是类似的 .. .Key方法,我对那个区别有点模糊)

此外,我需要制作NSWindowControllerNSMenu委托,以实现-menuNeedsUpdate(同样,保持委托与当前活动的NSWindowController.

这是正确的方法吗?

4

1 回答 1

0

我一直用于上下文相关菜单的一个技巧是利用 validateMenuItem 来做的不仅仅是验证 menuItems。

在您的情况下,您可以让应用程序委托菜单的委托,并在 validateMenuItem 内部,如果菜单项是您需要更改的,则更改它。调用 [NSDocumentManager sharedManager] 以获取当前活动文档的实例,并从中获取您需要的任何信息来填充您的菜单项。

于 2012-09-26T17:47:08.670 回答