Firdous
Firdous

Reputation: 4652

Checkbox control for iOS application

Is there any checkbox control in the object library for iOS applications? The nearest thing I see is the switch control, which can take a boolean value.

Upvotes: 12

Views: 19732

Answers (3)

Ketan Ubhada
Ketan Ubhada

Reputation: 275

//define property of button

Declare Unchecked Image

- (void)viewDidLoad
{
    [_checkboxButton setBackgroundImage:[UIImage imageNamed:@"unchecked.png"] forState:UIControlStateNormal];
}

Checked Image.

- (IBAction)buttonTapped:(id)sender
{
    if (_checkboxButton.selected == YES)
    {
        [_checkboxButton setBackgroundImage:[UIImage imageNamed:@"unchecked.png"] forState:UIControlStateSelected];
        _checkboxButton.selected = NO;
    }
    else
    {
        [_checkboxButton setBackgroundImage:[UIImage imageNamed:@"checked.png"] forState:UIControlStateNormal];
        _checkboxButton.selected = YES;
    }
}

Upvotes: 2

ıɾuǝʞ
ıɾuǝʞ

Reputation: 2849

You can use the selected state of a UIButton, set different images (or also texts) for differents (via code, or Interface Builder) :

[button setImage:[UIImage imageNamed:@"selected.png"]
        forState:UIControlStateSelected];
[button setImage:[UIImage imageNamed:@"unselected.png"]
        forState:UIControlStateNormal];

And in the touch up inside action :

- (IBAction)buttonTouched:(id)sender
{
    button.selected = !button.selected;
    // add other logic
}

Upvotes: 39

JScarry
JScarry

Reputation: 1507

This is the code I use for two checkboxes on the screen. (I put them at the bottom of two pictures that are also on the screen. I use the UIControlEventTouchDown to call the checkBoxTapped method. This method talks to my main view controller where I decide if the answer was correct or incorrect. Then the main view controller calls back the this view and tells it to change the blank textbox to either a check:

enter image description here

or an x

enter image description here

// Put the Checkboxes on the screen
UIImage *checkBox = [UIImage imageNamed:@"Checkbox"];

self.checkBoxLeft = [UIButton buttonWithType:UIButtonTypeCustom];
[self.checkBoxLeft setImage:checkBox forState:UIControlStateNormal];
[self.checkBoxLeft setFrame:checkBoxFrameLeft];
[self.checkBoxLeft addTarget:self 
                      action:@selector(checkBoxTapped:) 
            forControlEvents:UIControlEventTouchDown];

[self.checkBoxLeft setTitle:@"checkBoxLeft" forState:UIControlStateNormal];
self.checkBoxLeft.contentEdgeInsets = insets;
self.checkBoxLeft.showsTouchWhenHighlighted = NO; // Keeps it from turning gray

self.checkBoxRight = [UIButton buttonWithType:UIButtonTypeCustom];
[self.checkBoxRight setImage:checkBox forState:UIControlStateNormal];
[self.checkBoxRight setFrame:checkBoxFrameRight];
[self.checkBoxRight addTarget:self 
                       action:@selector(checkBoxTapped:) 
             forControlEvents:UIControlEventTouchDown];

[self.checkBoxRight setTitle:@"checkBoxRight" forState:UIControlStateNormal];
self.checkBoxRight.contentEdgeInsets = insets;
self.checkBoxRight.showsTouchWhenHighlighted = NO; // Keeps it from turning gray

- (void)checkBoxTapped:(UIButton *)buttonPressed {
    [[self delegate] checkBoxTapped:buttonPressed.currentTitle];
}

- (void)highlightCheckbox:(NSString *)checkboxToHighlight withHighlight:(NSString *)highlight {

    if ( [checkboxToHighlight isEqualToString:@"left"] ){
        [self.checkBoxLeft setImage:[UIImage imageNamed:highlight] forState:UIControlStateNormal];
    } else {
        [self.checkBoxRight setImage:[UIImage imageNamed:highlight] forState:UIControlStateNormal];
    }
}

Upvotes: 1

Related Questions