gpt4 book ai didi

cocoa - 跨多个 NSMenu 共享 NSMenuItem

转载 作者:行者123 更新时间:2023-12-03 18:04:20 25 4
gpt4 key购买 nike

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

为了简单起见,我们假设一个是主菜单,另一个是停靠栏菜单..

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

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

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

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

有这样做的最佳实践吗?有人做到了吗?结果如何?

最佳答案

如果同一个 Controller 是所有菜单项的目标,请将其设置为它们的委托(delegate),并让它实现 NSMenuDelegate 协议(protocol) - 具体来说,numberOfItemsInMenu:menu:updateItem: atIndex:shouldCancel: 方法。每个菜单都会询问您应该有多少个项目,根据需要创建尽可能多的项目来填补不足,然后要求您填写它们(包括设置它们的操作和可能的目标)。

结果是代码中的一个位置定义了两个菜单。

关于cocoa - 跨多个 NSMenu 共享 NSMenuItem,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3503647/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com