我有一个包含窗口的笔尖(winA.xib)。我的应用程序委托包含一个名为 WinAController 的 NSWindowController 子类。
WinAController 有一个属性(NSMenu *mainMenu),我想将其指向MainMenu。我在使用以下代码实例化 WinAController 后设置了它:
WinAController = [[WinAController alloc] initWithWindowNibName:@"WinA"];
WinAController.mainMenu = [NSApp mainMenu];
我在 MainMenu 上的“Window”顶级菜单项下面有一个菜单项,它调用 [WinAController showWindow] 方法并显示 WinA。我想根据 WinA 是否可见来切换此菜单项的开/关状态。 WinAController 还有另一个属性 (NSMenuItem *myMenuItem)。
如何获取对“窗口”顶级菜单项的子菜单的引用。我想要获取的子菜单项的标题是“命令”。我已经尝试过这个:
if (mainMenu != nil) {
myMenuItem = [mainMenu itemAtIndex:[mainMenu indexOfItemWithTitle:@"Command"]];
}
但这似乎不起作用。
我哪里错了?
Thanks,
Edit:我现在已将 WinAController 放置在 mainMenu.xib 中。我已将 WinA 的(在 winA.xib 中)文件的所有者设置为 WinAController 类,但我不知道如何将 WinAController 的窗口 IBOutlet 连接到 WinA,因为它们位于不同的笔尖中!
您可以直接存储对菜单项的引用,可能通过主笔尖中的 IBOutlet。
或者(更好,IMO),你可以实施-validateMenuItem:
in WinAController
并在那里设置状态(这样,只有当用户实际看到它时才会设置状态):
- (BOOL)validateMenuItem:(NSMenuItem *)item {
if ([item action] == @selector(showWindow:)]
[item setState:[winA isVisible] ? NSOnState : NSOffState];
return YES;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)