Как добавить галочку к NSMenuItem

В контекстном меню, как я могу дать NSMenuItem галочку? Я хочу поместить его рядом с определенными объектами. Я создаю меню в mouseDown: функция, как показано ниже:

-(void)mouseDown:(NSEvent *)event
{
NSPoint pointInView = [self convertPoint:[event locationInWindow] fromView:nil];

if (NSPointInRect(pointInView, [self shapeRect]) )
{       
    NSMenu *theMenu = [[[NSMenu alloc] initWithTitle:@"default Contextual Menu"] autorelease];

    [theMenu insertItemWithTitle:@"Circle" action:@selector(circle:) keyEquivalent:@"" atIndex:0];
    [theMenu insertItemWithTitle:@"Rectangle" action:@selector(rectangle:) keyEquivalent:@"" atIndex:1];

    [NSMenu popUpContextMenu:theMenu withEvent:event forView:self];        
}   
}

Как я могу дать объектам галочку?

11
задан Andreas -he-her- 14 June 2018 в 00:55
поделиться

2 ответа

Взгляните на протокол NSUserInterfaceItemValidations . При отображении меню он запросит каждого респондента в цепочке ответа методом validateUserInterfaceItem:, чтобы определить, должен ли этот элемент быть включен. (Элемент будет включен до тех пор, пока один из респондентов в цепочке возвращает YES). Это также дает вам возможность настроить элемент. Например:

- (BOOL)validateUserInterfaceItem:(id <NSValidatedUserInterfaceItem>)item {
    if ([item action] == @selector(actionMethodForItemThatShouldBeChecked:)] {
        // This method is also used for toolbar items, so it's a good idea to 
        // make sure you're validating a menu item here
        if ([item respondsToSelector:@selector(setState:)])
            [item setState:NSOnState];
    }
    return YES;
}
19
ответ дан 3 December 2019 в 02:19
поделиться

Вы хотите что-то вроде этого:

// Place a check mark next to "Circle"
NSMenuItem * theItem = [theMenu indexOfItemWithTitle: @"Circle"];
[item setState: NSOnState];

Вы бы использовали NSOffState для удаления галочки.

8
ответ дан 3 December 2019 в 02:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: