Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 取消选中Mac应用程序';选择一个之前的s菜单项设置状态:NSOffState_Objective C_Cocoa - Fatal编程技术网

Objective c 取消选中Mac应用程序';选择一个之前的s菜单项设置状态:NSOffState

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

我有一个带有子菜单的Mac应用程序。每个项目都可以勾选以指示哪个项目处于活动状态。我使用如下代码执行此操作:

[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];}现在它可以工作了!啊,是的,父项是一条很好的捷径。很高兴你成功了!