禁用 NSDocument 的 "Revert To" & "Duplicate" 菜单项
Disable NSDocument's "Revert To" & "Duplicate" menu item
我正在创建一个 Mac 应用程序来读取 XML 文档并保存它。除 "Revert To" 和 "Duplicate" 菜单项外,一切正常。直到我找到一个解决方案,我想禁用它们,但我没有找到任何解决方案,请告诉我如何禁用这两个选项,以便最终用户无法点击它们。
我已经查看了 .xib 中的菜单,以便我可以禁用它们,但我没有看到任何选项。
我试图以某种方式操纵下面的代码,但我没有找到任何答案。
覆盖 func duplicate() throws -> NSDocument {
return 自己
}
在 Cocoa 中禁用菜单项的一般方法是在 validateMenuItem(_:)
(或 validateUserInterfaceItem(_:)
。)
中返回 false
在这种情况下,将以下代码放入您的 NSDocument 子类中。
override func validateMenuItem(_ menuItem: NSMenuItem) -> Bool {
guard let action = menuItem.action else { return false }
switch action {
case #selector(duplicate(_:)):
return false
case #selector(revertToSaved(_:)):
return false
default: break
}
return super.validateMenuItem(menuItem)
}
但是,根据 Apple 的人机界面指南,您不应保留未使用的菜单项。因此,如果您的应用根本不支持复制和还原功能,我宁愿删除项目而不是禁用。
我正在创建一个 Mac 应用程序来读取 XML 文档并保存它。除 "Revert To" 和 "Duplicate" 菜单项外,一切正常。直到我找到一个解决方案,我想禁用它们,但我没有找到任何解决方案,请告诉我如何禁用这两个选项,以便最终用户无法点击它们。
我已经查看了 .xib 中的菜单,以便我可以禁用它们,但我没有看到任何选项。
我试图以某种方式操纵下面的代码,但我没有找到任何答案。
覆盖 func duplicate() throws -> NSDocument { return 自己 }
在 Cocoa 中禁用菜单项的一般方法是在 validateMenuItem(_:)
(或 validateUserInterfaceItem(_:)
。)
false
在这种情况下,将以下代码放入您的 NSDocument 子类中。
override func validateMenuItem(_ menuItem: NSMenuItem) -> Bool {
guard let action = menuItem.action else { return false }
switch action {
case #selector(duplicate(_:)):
return false
case #selector(revertToSaved(_:)):
return false
default: break
}
return super.validateMenuItem(menuItem)
}
但是,根据 Apple 的人机界面指南,您不应保留未使用的菜单项。因此,如果您的应用根本不支持复制和还原功能,我宁愿删除项目而不是禁用。