Gar*_*tet 2 xcode cocoa objective-c nsmenuitem
我有一个包含窗口的笔尖(winA.xib).我的app委托包含一个名为WinAController的NSWindowController子类.
WinAController有一个属性(NSMenu*mainMenu),我想指向MainMenu.我用以下代码实例化WinAController后设置了它:
WinAController = [[WinAController alloc] initWithWindowNibName:@"WinA"];
WinAController.mainMenu = [NSApp mainMenu];
Run Code Online (Sandbox Code Playgroud)
我在MainMenu上的"Window"顶级菜单项下面有一个菜单项,它调用[WinAController showWindow]方法并显示WinA.我想根据WinA是否可见来切换此菜单项的开/关状态.WinAController还有另一个属性(NSMenuItem*myMenuItem).
如何获取"Window"顶级菜单项的子菜单的引用.我想要获得的子菜单项的标题是"Command".我试过这个:
if (mainMenu != nil) {
myMenuItem = [mainMenu itemAtIndex:[mainMenu indexOfItemWithTitle:@"Command"]];
}
Run Code Online (Sandbox Code Playgroud)
但它似乎没有用.
我哪里错了?
谢谢,
编辑:我现在已将WinAController放在mainMenu.xib中.我已经将WinA(在winA.xib中)文件的所有者设置为类WinAController,但我无法弄清楚如何将WinAController的窗口IBOutlet连接到WinA,因为它们位于不同的笔尖中!
您可以直接存储对菜单项的引用,可以通过主笔尖中的IBOutlet存储.
或者(更好的是,IMO),你可以-validateMenuItem:
在WinAController
那里实现并设置状态(这样,状态仅在用户实际看到它时设置):
- (BOOL)validateMenuItem:(NSMenuItem *)item {
if ([item action] == @selector(showWindow:)]
[item setState:[winA isVisible] ? NSOnState : NSOffState];
return YES;
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2343 次 |
最近记录: |