cduck cduck - 2 months ago 15
Objective-C Question

What is the best way to make a UIButton checkbox?

I am trying to make a standard check box for my iPhone app from a

with a title and image. The button image changes between an "unchecked" image and a "checked" image.

At first I tried subclassing
has no
method to use in my

What is the best way to do this?

Thanks in advance.


You shouldn't need to subclass the UIButton class. By design, Objective-C favors composition over inheritance.

UIButton is a subclass of UIControl, which has a selected property. You can use this property to toggle the on/off behaviour of a checkbox, just the same way a UISwitch does.

You can attach an action to the button's touched up inside event, and perform the toggling in there, something like this:

// when you setup your button, set an image for the selected and normal states
[myCheckBoxButton setImage:nonCheckedImage forState:UIControlStateSelected];
[myCheckBoxButton setImage:nonCheckedImage forState:UIControlStateNormal];

- (void)myCheckboxToggle:(id)sender
    myCheckboxButton.selected = !myCheckboxButton.selected; // toggle the selected property, just a simple BOOL