Как скрыть NSMenuItem? - PullRequest
       8

Как скрыть NSMenuItem?

4 голосов
/ 28 июля 2011

В настоящее время я пишу Mac-приложение на Objective-C и не могу понять, как скрыть NSMenuItem. (Примечание. Да, я действительно имею в виду скрытие, а не отключение / отключение. Я понимаю, что это значит для UX, но на самом деле это не то, что вы думаете. Просто поверьте мне в этом.)

В документации ничего не сказано об этом, возможно ли это?

Ответы [ 3 ]

9 голосов
/ 28 июля 2011

Если вы определили свой NSMenuItem в заголовке и подключили его через NIB, вы можете просто вызвать свойство Скрытый .

[myMenuItem setHidden:YES];

"Затенение" пункта меню будет [myMenuItem setEnabled: NO];

0 голосов
/ 05 января 2018

Свойство Obj-C называется «скрытым». Это означает, что базовый логический член называется _hidden, и для вас автоматически синтезируются 3 метода доступа: 2 получателя: isHidden и hidden плюс один установщик: setHidden.

В Obj-C, используя точечную запись, вы можете установить свойство только с помощью:

myMenuItem.hidden = YES; // or NO

или в обычном сообщении:

[myMenuItem setHidden:YES]; // or NO

, чтобы получить значение, вы можете либо myMenuItem.hidden, myMenuItem.isHidden, [myMenuItem hidden] или [myMenuItem setHidden]

Теперь Swift заимствует свое соглашение об именах из (на мой взгляд, языкового уровня) C и C ++. Логическое свойство будет иметь как его установщик, так и получатель с именем «isHidden».

Когда XCode конвертирует заголовки Cocoa Obj-C Framework с помощью интерфейса Obj-C, определяющего свойство скрытого --- он синтезирует свойство swift "isHidden", которое доступно для чтения / записи.

Вот почему вы можете использовать как геттер, так и сеттер:

if myMenuItem.isHidden {
}

и

myMenuItem.isHidden = true // or false

Надеюсь, что это охватывает проблему

0 голосов
/ 20 декабря 2017

Я полагаю, что функция могла измениться на

[menuItem isHidden: YES]

https://developer.apple.com/documentation/appkit/nsmenuitem

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...