April 2015
Intermediate to advanced
556 pages
17h 47m
English
Cocoa automatically disables menu items when it cannot find that menu item’s action in the responder chain. At times you will want to disable a menu item depending on the state of the application. Consider the Cut, Copy, and Paste items: they are automatically disabled whenever there is nothing to be copied or cut or if there is nothing on the pasteboard.
This validation is performed by overriding the validateMenuItem(_:) method in the same class as the actions you want to validate. For example, you could disable copying when no number is displayed by implementing this method in DieView:
override func validateMenuItem(menuItem: NSMenuItem) -> Bool { switch menuItem.action { case Selector("copy:"): return intValue ...