我通过 Interface Builder 创建了一个 NSMenu。菜单项之一称为 showPreferencesPanel 方法,在 KBAppController.m 中定义:
-(void)showPreferencesPanel {
//something
}
现在,我必须在没有 IB 的情况下重新构建菜单......全部以编程方式。StatusMenu.m 是处理所有这些的类,我无法确定应该设置的目标,以便从另一个类调用方法。
创建该类的实例不起作用!菜单项显示为灰色。
状态菜单.m
KBAppController *kbAppController = [[KBAppController alloc]init];
NSMenuItem* preferencesItem;
[preferencesItem setTarget:kbAppController];
preferencesItem = [[NSMenuItem alloc] initWithTitle:@"Preferences…" action:@selector(showPreferencesPanel) keyEquivalent:@""];
编辑:--------------------------------------------------------
这是使用 KBAppController 类对象的更新代码。好消息是启用了首选项菜单项,但它仍然没有调用 KBAppController.m 中的方法:(
KBStatusMenu.m
@synthesize kbAppController = _kbAppController;
someMethod {
NSMenuItem* preferencesItem;
preferencesItem = [[NSMenuItem alloc] initWithTitle:@"Preferences…" action:@selector(showPreferencesPanel) keyEquivalent:@""];
[preferencesItem setTarget:self];
}
- (void)showPreferencesPanel {
NSLog(@"in 1");
[_kbAppController showPreferencesPanel];
}
KBAppController.m
-(void)showPreferencesPanel {
NSLog(@"in 2");
//something
}