0

我在同一个应用程序中有多个菜单,并希望在它们之间共享子菜单。

为简单起见,假设一个是主菜单,另一个是停靠磁贴菜单。

我的子菜单包含相当多的项目(比如说字体名称),出于各种原因,我需要对其中的许多项目进行 iboutlet 引用。

在 IB 中,我找不到任何“共享”这些子菜单的方式,所以我最终复制了 IB 定义(即在两个不同的地方手动重新创建每个项目),保留对两个 nsmenuitem 的引用,而不仅仅是一个等。这不好。

有没有办法在多个 NSMenus 之间共享子菜单定义?

我试图在 IB 中创建一个顶级菜单项,但我似乎无法将它链接到菜单定义中的任何内容。此外,我担心即使我设法以编程方式执行此操作,它也可能会弄乱绑定、响应者层次结构、内存管理等。

是否有这样做的最佳实践?有人做过吗?结果如何?

4

1 回答 1

1

如果同一个控制器是所有菜单项的目标,则将其设置为它们的委托,并让它实现 NSMenuDelegate 协议——特别是numberOfItemsInMenu:andmenu:updateItem:atIndex:shouldCancel:方法。每个菜单都会询问你应该有多少项目,创建尽可能多的项目来填补不足,然后要求你填写它们(包括设置他们的行动和可能的目标)。

结果是在您的代码中定义两个菜单的地方。

于 2010-08-17T19:58:41.423 回答