0

我的应用程序有一个带有一些图形的主窗口和一个用于调整主窗口内容的 hud 面板。我使用一个名为“调整”的菜单标题来调出 hud,并在不再需要时将其隐藏起来。这一切都很好。现在到“简单”的部分。我在“调整”标题下有 2 个项目(这是顶部的第二个标题,索引 = 1):“显示调整”打开带有所有滑块的(hud)调整面板,“隐藏调整”关闭窗口. 我认为我应该在面板打开之前将“隐藏调整”项变暗,然后在面板关闭之前隐藏“显示调整”项。即使在阅读了所有关于 NSMenu、NSMenuItem 等的信息后,我仍然很难做到这一点。在我的 awakeFromNib 文件中,我有:

rootMenu = [NSApp mainMenu];  
[rootMenu setAutoenablesItems:NO];  
[[rootMenu itemWithTag:11] setEnabled:YES];// I set the Tag for "Show .." in IB to 11  
[[rootMenu itemWithTag:12] setEnabled:NO];//  I set the tag for "Hide .." in IB to 12  

什么都不做!

在连接到“显示调整”项目的 IBAction“功能”中,我有:

[self orderFront:nil]; // which opens the hud  

// 但是这个东西不会使第一个下拉菜单项变暗:

[[rootMenu itemWithTag:11]  setEnabled:NO];// doesn't do anything  
[[rootMenu itemWithTag:12]  setEnabled:YES];// doesn't do anything  
[[rootMenu itemAtIndex:0]  setEnabled:NO];// dims the "quit" menu - un-guideline-like, I know, I know !  

如果我添加这个:

[[rootMenu itemAtIndex:1]  setEnabled:NO]; // both items dim, so I think I'm close !    

我可以调暗两个下拉项目,但当然我只想调暗其中一个!如何引用单个项目?我认为“itemWithTag”会起作用,但到目前为止还没有。

如果有帮助,我需要在 Futurebasic 中执行相当于 MENU 2,1,0 和 MENU 2,2,1 的操作。

(顺便说一句,如果你不知道,我还没有跟上所有这些对象的速度!)

4

1 回答 1

0

我不明白菜单层次结构。我现在意识到下拉菜单是一个子菜单,其中的项目可以这样控制:

menuItem = [rootMenu itemAtIndex:1];  
subMenu = [menuItem submenu];  
[[subMenu itemWithTag:11] setEnabled:YES];  
[[subMenu itemWithTag:12] setEnabled:NO];  
于 2012-08-26T11:59:00.590 回答