我目前正在用Objective-C编写一个Mac App,但我无论如何也想不出如何隐藏一个NSMenuItem。(注意:是的,我的意思是隐藏,而不是禁用/灰显。我意识到了这样做的UX含义,但其功能并不是您所想的那样。在这一点上相信我。)
文档中并没有提到这样做,这是可能的吗?
发布于 2011-07-28 14:32:06
如果您已经在头文件中定义了NSMenuItem并通过您的NIB连接它,那么您可以简单地调用Hidden属性。
[myMenuItem setHidden:YES];“灰显”的menuItem将是[myMenuItem setEnabled: NO];
发布于 2017-12-20 11:03:17
发布于 2018-01-05 15:41:54
Obj-C属性被命名为“隐藏”。这意味着,底层的布尔成员被命名为_hidden,并自动合成3个访问器:2个setter:isHidden和hidden,外加一个setter:setHidden。
在Obj-C中,使用点表示法,您只能使用以下命令设置属性:
myMenuItem.hidden = YES; // or NO或者在普通消息中:
[myMenuItem setHidden:YES]; // or NO要获取该值,可以使用myMenuItem.hidden、myMenuItem.isHidden、[myMenuItem hidden]或[myMenuItem setHidden]
现在,Swift借鉴了C和C++的命名约定(在我看来,这两种语言在语言上不如前者)。布尔型属性的setter和getter都命名为"isHidden“。
当Xcode转换Cocoa Obj-C框架头部时,Obj-C接口定义了隐藏属性-它合成了一个读/写的"isHidden“快速属性。
这就是为什么你可以同时使用getter和setter:
if myMenuItem.isHidden {
}和
myMenuItem.isHidden = true // or false希望这篇文章涵盖了这个问题。
https://stackoverflow.com/questions/6854835
复制相似问题