NSMenuItem не включен? - PullRequest
       1

NSMenuItem не включен?

8 голосов
/ 26 февраля 2011

У меня есть NSMenuItem с именем history, который находится в NSMenu с именем menu.Когда моя программа запускается, история не имеет подменю, поэтому она отключена.Затем в какой-то момент мне нужно подменю для истории, поэтому я создаю его, делаю его подменю истории.Рядом с историей появляется стрелка, которая говорит мне, что подменю есть.Но история все еще отключена.Я пробовал setEnabled, но не работает.Пожалуйста помоги.Вот мой код:

Это когда я создаю свое меню и историю, как вы можете видеть NSMenuItem в меню.

    menu = [[NSMenu alloc] initWithTitle:@"Menu"];
[[menu addItemWithTitle:@"History" action:nil keyEquivalent:@""] setTarget:self];
[[menu addItemWithTitle:@"Settings" action:@selector(loadSettings:) keyEquivalent:@""] setTarget:self];
[[menu addItemWithTitle:@"Quit" action:@selector(terminateApp:) keyEquivalent:@""] setTarget:self];

На этом этапе история отключена (выделена серым цветом).Тогда где-то в программе мне нужно подменю для истории, так:

        if (historyMenu == nil) {
        historyMenu = [[NSMenu alloc] initWithTitle:@"Lyrics history"];
        [menu setSubmenu:historyMenu forItem:[menu itemWithTitle:@"History"]];
    }

Теперь я вижу стрелку рядом с историей, но она все еще неактивна.

Пожалуйста, помогите, я былпытаясь выяснить это за последние 2 часа.Спасибо.

Ответы [ 2 ]

8 голосов
/ 26 февраля 2011

Вы устанавливаете цель, но у вас нет действия. Попробуйте не устанавливать цель. Это может оставить его включенным все время, и в этом случае вам, возможно, придется вручную включить или отключить пункт меню.

Вот документация о том, как включаются пункты меню.

2 голосов
/ 12 мая 2016

Мне пришлось переопределить метод validateMenuItem на return true:

override func validateMenuItem(menuItem: NSMenuItem) -> Bool {
    return true
}

На самом деле он не использовал метод проверки, пока я не установил для себя цель, хотя, как вы сделали с

menu.addItemWithTitle("An Item", action: #selector(itemPressed), keyEquivalent: "")?.target = self
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...