Я новичок в macOS XCode Obj- C, так что несите меня. Я пытаюсь использовать validateMenuItem
, чтобы отключить и включить определенные c элементы меню.
В настоящее время я работаю, чтобы отключить и включить * все элементы меню:
BOOL g_bEnableAllMenus = YES;
, а затем Я использую validateMenuItem
- (BOOL)validateMenuItem:(NSMenuItem *)item
{
if( !g_bEnableAllMenus )
return NO;
return YES;
}
Для проверки я вызываю g_bEnableAllMenus
в awakeFromNib
, и он правильно отключает все мои пункты меню.
- (void)awakeFromNib {
g_bEnableAllMenus = NO;
}
Что я Я пытаюсь сделать сейчас этот сценарий:
Вместо g_bEnableAllMenu
s отключения и включения ВСЕХ пунктов меню при вызове g_bEnableAllMenus = YES/NO;
, я хочу, чтобы он отключил все пункты меню, ЗА ИСКЛЮЧЕНИЕМ списка нескольких других пунктов меню под меню под названием TestMenu.
Затем я хочу, чтобы этот список других пунктов меню в TestMenu отдельно контролировался с помощью другого BOOL: чтобы я мог включать и отключать этот пункт меню отдельно и не изменять его с помощью g_bEnableAllMenus
- только g_bEnableTestMenu
.
BOOL g_bEnableTestMenu = YES;
Вот где я застрял. Я думаю, мне нужно использовать некоторую комбинацию [item action] == @selector(TestMenuItem:)
в validateMenuItem
, поэтому, когда g_bEnableTestMenu == NO
он отключает все пункты меню в моем TestMenu (но не касается других пунктов меню).
Затем, когда g_bEnableAllMenus == NO
он по-прежнему отключает все мои меню (как это правильно сейчас), но исключает мое TestMenu.