首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何隐藏NSMenuItem?

如何隐藏NSMenuItem?
EN

Stack Overflow用户
提问于 2011-07-28 14:23:12
回答 3查看 2.1K关注 0票数 4

我目前正在用Objective-C编写一个Mac App,但我无论如何也想不出如何隐藏一个NSMenuItem。(注意:是的,我的意思是隐藏,而不是禁用/灰显。我意识到了这样做的UX含义,但其功能并不是您所想的那样。在这一点上相信我。)

文档中并没有提到这样做,这是可能的吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-07-28 14:32:06

如果您已经在头文件中定义了NSMenuItem并通过您的NIB连接它,那么您可以简单地调用Hidden属性。

代码语言:javascript
复制
[myMenuItem setHidden:YES];

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

票数 10
EN

Stack Overflow用户

发布于 2017-12-20 11:03:17

我相信功能可能已经变成了

代码语言:javascript
复制
[menuItem isHidden: YES]

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

票数 0
EN

Stack Overflow用户

发布于 2018-01-05 15:41:54

Obj-C属性被命名为“隐藏”。这意味着,底层的布尔成员被命名为_hidden,并自动合成3个访问器:2个setter:isHiddenhidden,外加一个setter:setHidden

在Obj-C中,使用点表示法,您只能使用以下命令设置属性:

代码语言:javascript
复制
myMenuItem.hidden = YES; // or NO

或者在普通消息中:

代码语言:javascript
复制
[myMenuItem setHidden:YES]; // or NO

要获取该值,可以使用myMenuItem.hiddenmyMenuItem.isHidden[myMenuItem hidden][myMenuItem setHidden]

现在,Swift借鉴了C和C++的命名约定(在我看来,这两种语言在语言上不如前者)。布尔型属性的setter和getter都命名为"isHidden“。

当Xcode转换Cocoa Obj-C框架头部时,Obj-C接口定义了隐藏属性-它合成了一个读/写的"isHidden“快速属性。

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

代码语言:javascript
复制
if myMenuItem.isHidden {
}

代码语言:javascript
复制
myMenuItem.isHidden = true // or false

希望这篇文章涵盖了这个问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6854835

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档