我有一个NSSearchField控件,在该控件中,当用户单击左边的箭头时,我要显示几个类别,它们将作为菜单出现。在阅读了苹果的文档之后,我有了一些想法。下面是我的代码。
// .h
@interface AppDelegate : NSObject {
IBOutlet NSSearchField *searchField;
}
// .m
- (void)awakeFromNib {
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(windowDidBecomeKey:) name:NSWindowDidBecomeKeyNotification object:[self window]];
[window setContentBorderThickness:22.0 forEdge:NSMinYEdge];
NSMenu *cellMenu = [[NSMenu alloc] initWithTitle:NSLocalizedString(@"Search Menu",@"Search Menu title")];
NSMenuItem *item;
item = [[NSMenuItem alloc] initWithTitle:@"Title" action:@selector(setSearchCategoryFrom:) keyEquivalent:@""];
[item setTarget:self];
[item setTag:1];
[cellMenu insertItem:item atIndex:0];
item = [[NSMenuItem alloc] initWithTitle:@"Username" action:@selector(setSearchCategoryFrom:) keyEquivalent:@""];
[item setTarget:self];
[item setTag:2];
[cellMenu insertItem:item atIndex:1];
id searchCell = [searchField cell];
[searchCell setSearchMenuTemplate:cellMenu];
}
- (IBAction)setSearchCategoryFrom:(NSMenuItem *)menuItem {
if ([menuItem tag] == 0) {
}
else {
}
}下面的截图显示了结果。现在,我需要将选择的状态设置为1,无论他们选择哪种状态,这样就会出现一个复选标记。我该怎么做?
谢谢你的帮助。

发布于 2014-09-12 05:22:13
下列各点应能发挥作用。
// .h
@interface AppDelegate : NSObject {
IBOutlet NSSearchField *searchField;
NSMenu *searchMenu;
}
// .m
@implementation AppDelegate {
NSInteger lastSearchSelection;
}
- (void)awakeFromNib {
NSMenu *cellMenu = [[NSMenu alloc] initWithTitle:NSLocalizedString(@"Search Menu",@"Search Menu title")];
NSMenuItem *item;
item = [[NSMenuItem alloc] initWithTitle:@"Title" action:@selector(setSearchCategoryFrom:) keyEquivalent:@""];
[item setTarget:self];
[item setTag:1];
[cellMenu insertItem:item atIndex:0];
item = [[NSMenuItem alloc] initWithTitle:@"Username" action:@selector(setSearchCategoryFrom:) keyEquivalent:@""];
[item setTarget:self];
[item setTag:2];
[cellMenu insertItem:item atIndex:1];
id searchCell = [searchField cell];
[searchCell setSearchMenuTemplate:cellMenu];
}
- (IBAction)setSearchCategoryFrom:(NSMenuItem *)menuItem {
[[[sender menu] itemWithTag:lastSearchSelection] setState:NSOffState];
[sender setState: NSOnState];
lastSearchSelection = [sender tag];
}发布于 2014-09-12 04:30:28
我要添加一个类别菜单(例如:搜索主题、正文或.)在我的NSSearchField里。我已经成功地设置了菜单,但是如果我尝试将菜单项设置为state,则会出现一个问题:NSOffState。当我选择一个菜单时,应该关闭前面选择的类别。这是代码:
- (IBAction) menu_selectNewFilter:(id) sender {
NSMenuItem *m = [searchMenu itemWithTag: selectedFilter];
[m setState: NSOffState];
NSLog(@"Disabled %@ %d",[m title],[m tag]);
NSLog(@"Activate %@ %d",[sender title],[sender tag]);
[sender setState: NSOnState];
selectedFilter = [sender tag];}
- (IBAction)setSearchCategoryFrom:(NSMenuItem *)menuItem {
[[[sender menu] itemWithTag:lastSearchSelection] setState:NSOffState];
[sender setState: NSOnState];
lastSearchSelection = [sender tag];
}https://stackoverflow.com/questions/25800722
复制相似问题