Возможно, у вас есть контроллер представления или оконный контроллер, который реализует runCalculation
, например:
class ViewController: NSViewController {
@IBAction func runCalculation(_ sender: Any?) {
print(1 + 1)
}
}
И вы подключили действие пункта меню «Выполнить расчет» к методу runCalculation
контроллер.
Чтобы включить и отключить пункт меню, выполните следующие действия:
Убедитесь, что само меню «Калькулятор» (типа NSMenu
) имеет «Свойство Auto Enables Items ”включено в IB, или для autoenablesItems
установлено значение true в коде.
Сделайте вашКонтроллер соответствует протоколу NSUserInterfaceValidations
:
extension ViewController: NSUserInterfaceValidations {
func validateUserInterfaceItem(_ item: NSValidatedUserInterfaceItem) -> Bool {
// See step 3...
return true
}
}
В validateUserInterfaceItem
, проверьте, является ли action
элемента runCalculation(_:)
.Если это так, верните true, если и только если вы хотите разрешить пользователю выполнять вычисления:
extension ViewController: NSUserInterfaceValidations {
func validateUserInterfaceItem(_ item: NSValidatedUserInterfaceItem) -> Bool {
switch item.action {
case #selector(runCalculation(_:))?:
// Put your real test here.
return !textField.stringValue.isEmpty
default: return true
}
}
}