我目前正在使用Objective-C编写一个Mac应用程序,并且在我的生活中无法弄清楚如何隐藏NSMenuItem。 (注意:是的,我的意思是隐藏,而不是禁用/灰显。我意识到了这样做的用户体验的影响,但功能并不是你认为的那样。只要信任我。)
文档没有提到这样做,甚至可能吗?
答案 0 :(得分:9)
如果您在标题中定义了NSMenuItem
并通过NIB连接了它,则只需拨打隐藏属性即可。
[myMenuItem setHidden:YES];
“灰显”menuItem将为[myMenuItem setEnabled: NO];
答案 1 :(得分:0)
Obj-C属性被命名为“hidden”。这意味着,底层布尔成员名为_hidden,并且会自动为您合成3个访问者:2个getter:isHidden
和hidden
加上一个setter:setHidden
。
在Obj-C中,使用点表示法只能使用:
设置属性myMenuItem.hidden = YES; // or NO
或正常消息:
[myMenuItem setHidden:YES]; // or NO
获取您可以myMenuItem.hidden
,myMenuItem.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)