每次打开时修改NSMenu结构?

9
我需要能够在每次显示NSMenu层次结构时动态修改它(添加/删除项目等)。例如:
1.用户在主菜单上启动跟踪会话并选择子菜单 2.检测到子菜单即将打开并运行代码以修改它 3.保持跟踪,用户再次跟踪相同的子菜单:转到步骤2
因此,我有一个实现NSMenuDelegate协议的对象。menuNeedsUpdate方法第一次(步骤2)起作用,但不适用于第二次打开子菜单(每个跟踪会话仅调用一次)。
menuWillOpen方法每次都会被调用,但文档中有以下警告,似乎不适合使用这种方法:
请勿在此方法期间修改菜单或菜单项的结构。
有没有办法完成这个任务?

我觉得你需要使用NSMenu.update()方法。 - onmyway133
2个回答

0

0

menuWillOpen只会在第一次跟踪子菜单时被调用。此时,您将填充菜单。

此后,不会再次调用menuWillOpen。然而,菜单的任何更改都将实时发生。因此,在主父菜单打开时,每当源数据更改(或定期更改)时,使用普通的NSMenu API更新菜单。

确保您用于更新菜单的任何方法都能在系统跟踪您的菜单时运行。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接