如何隐藏NSMenuItem?

问题描述 投票:4回答:3

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

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

objective-c macos nsmenuitem
3个回答
9
投票

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

[myMenuItem setHidden:YES];

“灰色”menuItem将是[myMenuItem setEnabled: NO];


0
投票

Obj-C属性被命名为“隐藏”。这意味着,底层布尔成员名为_hidden,并为您自动合成3个访问器:2个getters: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

希望这能涵盖这个问题


-1
投票

我相信这个功能可能已改为

[menuItem isHidden: YES]

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

© www.soinside.com 2019 - 2024. All rights reserved.