Version 2.0, 2012-04-09
Updated project to Xcode 4.4; now uses ARC. Moved the unbinding code from dealloc to viewWillMoveToSuperview: and updated to use -infoForBinding:.
(Full Revision History)
Xcode 4.4, OS X v10.8.
OS X v10.7.
This sample contains a "joystick" view that shows how you can implement a bindings-enabled subclass of NSView.
In addition to supporting basic binding for a sigle value, it responds properly to multiple selection markers. It is discussed in greater detail in "Cocoa Bindings Programming Topics > How Do Bindings Work?" (http://developer.apple.com/documentation/Cocoa/Conceptual/CocoaBindings/Concepts/HowDoBindingsWork.html).
User Interface -------------- The user interface is contained in MainMenu.xib. The main objects instantiated in the nib file are: * A window that contains - A table view to display Position objects. - A Joystick view. - Text fields to display and edit angle and offset values of the currently-selected Position object. * An instance of AppController to manage the view and a collection of Position objects. * An array controller for the App Controller's Position objects.
Classes ------- The classes used in the sample are as follows:
AppController: A simple controller object that manages a collection of Position objects containing offset and angle values. It is also responsible for establishing the bindings from the joystick view to the array controller.
JoystickView: The main focus of the sample: A view that displays the angle and offset of an object, and allows those values to be edited graphically. These features also support bindings.
Position: A trivial model class to encapsulate an angle and an offset.