gpt4 book ai didi

swift - 如何使 NSMenuItem 变灰?

转载 作者:行者123 更新时间:2023-11-30 12:11:25 26 4
gpt4 key购买 nike

我正在使用 Swift 编写一个针对 macOS Sierra 的应用程序。

我有一个 NSMenuItem,我想将其变灰(这样用户甚至无法选择它)。

我已在 Storyboard 中将其父菜单 AutoEnableItems 设置为 FALSE,并通过登录我的代码验证它仍然为 false。

当我将 NSMenuItem 的 isEnabled 属性设置为 false 时,它​​的作用是,当我选择该菜单项时,不会调用与该菜单项关联的操作(这很好),但菜单仍然可选。

我想要的是它变灰,并且显然用户无法选择。

最佳答案

根据文档,您所做的事情听起来确实正确。

但是,我的方法是实现 validateMenuItem在我的 AppDelegate 类中。这个方法有点烦人,因为每个菜单项都会调用它,并且菜单项作为参数传递。所以你必须打开参数,看看它是否是你想要禁用的菜单项,然后返回 false。

这里有一个 Objective-C 示例:https://developer.apple.com/documentation/objectivec/nsobject/1518160-validatemenuitem

Swift 示例可能如下所示:

override func validateMenuItem(_ menuItem: NSMenuItem) -> Bool {       
switch menuItem.tag {
case MenuItemTags.SignOut:
return signOutEnabled()
case MenuItemTags.CheckForUpdates:
return updatesEnabled()
default:
return true
}
}

您可能已经读过这篇文章,但这里有很多血淋淋的细节:https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/MenuList/Articles/EnablingMenuItems.html

但是,正如我所说,这篇文章似乎表明您正在尝试的内容是正确的,所以谁知道呢?我可以肯定地说我的方法有效。

关于swift - 如何使 NSMenuItem 变灰?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46005253/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com