An action is a message emitted automatically by a Cocoa UIControl interface object (a control), and sent to another object, when the user does something to it, such as tapping the control. The various user behaviors that will cause a control to emit an action message are called events. To see a list of possible events, look at the UIControl class documentation, under “Control Events.” For example, in the case of a UIButton, the user tapping the button corresponds to the UIControlEventTouchUpInside event.
For this architecture to work, the control object must know three things:
- What control event to respond to
- What message to send (method to call) when that control event occurs (the action)
- What object to send that message to (the target)
An action connection in a nib has the control object as its source; its destination is the target, to which the source will send the action message.
- (IBAction) buttonPressed: (id) sender {
UIAlertView* av = [[UIAlertView alloc] initWithTitle:@"Howdy!"
message:@"You tapped me."
delegate:nil
cancelButtonTitle:@"Cool"
otherButtonTitles:nil];
[av show];
}
The term IBAction is like IBOutlet: it’s a hint to Xcode itself, and is linguistically legal because, although Xcode can see the hint in your code, the compiler will treat it as equivalent to void. It asks Xcode to make this method available in the nib editor as the selector of an action message, when an object of the class where this method is defined is the destination of an action connection.
- Starting in the View Controller object’s Connections inspector, drag from the circle at the right of buttonPressed: to the button. Release the mouse.
- A HUD listing control events appears. Click Touch Up Inside.