Objective c 取消选中Mac应用程序';选择一个之前的s菜单项设置状态:NSOffState
我有一个带有子菜单的Mac应用程序。每个项目都可以勾选以指示哪个项目处于活动状态。我使用如下代码执行此操作:Objective c 取消选中Mac应用程序';选择一个之前的s菜单项设置状态:NSOffState,objective-c,cocoa,Objective C,Cocoa,我有一个带有子菜单的Mac应用程序。每个项目都可以勾选以指示哪个项目处于活动状态。我使用如下代码执行此操作: [sender setState:NSOnState]; 但是,每次单击一个新项目时,以前的项目都保持选中状态 委员会: 在响应组中所有命令的操作方法中使用 setState:要取消选中当前标记的菜单项: [当前项目设置状态:NSOffState] 我不确定这是怎么回事。我对目标C和Cocoa很陌生。有人有小费吗?如果你有: Item A Item 1 Item 2
[sender setState:NSOnState];
但是,每次单击一个新项目时,以前的项目都保持选中状态
委员会:
在响应组中所有命令的操作方法中使用
setState:要取消选中当前标记的菜单项:
[当前项目设置状态:NSOffState]
我不确定这是怎么回事。我对目标C和Cocoa很陌生。有人有小费吗?如果你有:
Item A
Item 1
Item 2
Item 3
您希望这样,对于项目1-3,一次只能检查一个,我要做的是:为每个菜单项创建IBoutlet,并将它们分组到awakeFromNib中的数组中。当您从每个项目发出呼叫时,在该数组中循环,使用
setState:NSOffState
关闭所有内容,然后再次使用setState:nsState
呼叫重新打开新单击的项目。谢谢,这听起来很合理。然而,它的一部分正好射过我的头。我认为我从未制作过iboutlet(尽管我使用过),这是我第一次听说awakeFromNib。别以为你能给我更多的信息让我继续下去,可以吗?(即使只是一个能产生好结果的链接或搜索短语)IBOutlets只是指针。好的,谢谢。在你的帮助下,也在IRC上得到了一些帮助,我已经解决了这个问题。我在.h文件中创建了一个插座:@property(assign)IBOutlet NSMenu*菜单代码>然后我按住ctrl键并从IB中的类拖动到父菜单。然后,在我的代码中,我能够使用以下内容:for(在_menu.itemArray中的NSMenuItem*menuitem){[menuitem setState:NSOffState];}现在它可以工作了!啊,是的,父项是一条很好的捷径。很高兴你成功了!