如何隐藏NSMenuItem?

时间:2011-07-28 06:23:12

标签: objective-c macos nsmenuitem

我目前正在使用Objective-C编写一个Mac应用程序,并且在我的生活中无法弄清楚如何隐藏NSMenuItem。 (注意:是的,我的意思是隐藏,而不是禁用/灰显。我意识到了这样做的用户体验的影响,但功能并不是你认为的那样。只要信任我。)

文档没有提到这样做,甚至可能吗?

3 个答案:

答案 0 :(得分:9)

如果您在标题中定义了NSMenuItem并通过NIB连接了它,则只需拨打隐藏属性即可。

[myMenuItem setHidden:YES];

“灰显”menuItem将为[myMenuItem setEnabled: NO];

答案 1 :(得分:0)

Obj-C属性被命名为“hidden”。这意味着,底层布尔成员名为_hidden,并且会自动为您合成3个访问者:2个getter:isHiddenhidden加上一个setter:setHidden

在Obj-C中,使用点表示法只能使用:

设置属性
myMenuItem.hidden = YES; // or NO

或正常消息:

[myMenuItem setHidden:YES]; // or NO

获取您可以myMenuItem.hiddenmyMenuItem.isHidden[myMenuItem hidden][myMenuItem setHidden]

的价值

现在,斯威夫特从(在我看来,语言上的劣势)C和C ++中借用了它的命名约定。布尔属性将其setter和getter命名为“isHidden”。

当Xcode使用定义隐藏属性的Obj-C接口转换Cocoa Obj-C Framework头时,它会合成一个读/写的“isHidden”swift属性。

这就是为什么你可以同时使用getter和setter:

if myMenuItem.isHidden {
}

myMenuItem.isHidden = true // or false

希望这涵盖问题

答案 2 :(得分:-1)

我相信该功能可能已更改为

[menuItem isHidden: YES]

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