在每次打开时修改NSMenu结构?

我需要能够在每次显示时动态修改NSMenu层次结构(添加/删除项目等)。例如: 用户在主菜单上启动跟踪会话并选择子菜单 检测子菜单即将打开并运行代码进行修改 继续跟踪,用户再次在同一个子菜单上跟踪:转到2 所以要做到这一点,我有一个实现NSMenuDelegate协议的对象。方法menuNeedsUpdate第一次工作(2),但第二次打开子菜单时不起作用。 (每个跟踪会话只调用一次) 每次调用menuWillOpen方法,但是文档有以下警告,似乎使用此方法取消资格:   不要修改结构   菜单或此期间的菜单项   方法。 有没有办法实现这个目标?     
已邀请:
你可以继承NSMenu并覆盖submenuAction:。 或者您可以订阅NSMenuWillSendActionNotification。 虽然听起来它不适合你,仅供参考,NSMenuValidation是一个逐项更新菜单项的好地方。     
menuWillOpen仅在第一次跟踪子菜单时被调用一次。此时,您将填充菜单。 之后,不会再次调用menuWillOpen。但是,对菜单的任何更改都将实时进行。因此,当主要父菜单打开时,无论何时源数据发生更改(或者如果无法检测到更改,都会定期更改),请使用常规NSMenu API更新菜单。 确保在系统跟踪菜单时运行用于更新菜单的任何方法。     

要回复问题请先登录注册