gpt4 book ai didi

objective-c - 使用操作和状态变量连接多个 NSMenuItem

转载 作者:行者123 更新时间:2023-12-03 16:58:42 26 4
gpt4 key购买 nike

我不确定如何描述我需要什么,但我会通过一个例子尝试一下:

假设我们有一个窗口和一个侧边栏,并且想要切换它(我的意思是侧边栏:开/关)。

现在,我们还要说:

  • 用户可以通过主菜单中的某个项目切换侧边栏(例如显示侧边栏/隐藏侧边栏)
  • 用户还可以通过按钮切换侧边栏
  • 在其他菜单中还有另一个项目可以执行相同的操作(显示/隐藏侧边栏)

实现这一目标的最实用的 cocoa 友好方法是什么?

当然,这意味着,例如:

  • 当有人点击按钮时,除了侧边栏(显示或隐藏)之外,菜单项现在必须显示侧边栏的当前状态(例如,在所有可能的情况下,“显示侧边栏”现在必须变为“隐藏侧边栏”)在菜单等内)

我希望你能明白;这绝对不是什么难事;但我确实对如何使用 Cocoa 的所有技巧来快速完成这件事感到困惑。

谢谢!

最佳答案

我假设您有一些实现操作 -toggleSidebar: 的 Controller 对象,并且两个菜单都针对同一 Controller 。此外,在 Controller 中,您保留一个实例变量 BOOL isSidebarShown

让你的 Controller 实现NSUserInterfaceValidations协议(protocol)。像这样的事情:

- (BOOL)validateUserInterfaceItem:(id <NSValidatedUserInterfaceItem>)anItem
{
if (anItem.action == @selector(toggleSidebar:) && [anItem isKindOfClass:[NSMenuItem class]])
{
NSString* title = isSidebarShown ? @"Hide Sidebar" : @"Show Sidebar";
[(NSMenuItem*)anItem setTitle:title];
}

return YES; // either way, the menu item is enabled
}

关于objective-c - 使用操作和状态变量连接多个 NSMenuItem,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9764179/

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