Problems with CheckBox with images

When I check the box a second time, it shows me a verified image, but the status is not set.

Here is my code:

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

- (IBAction)CheckBox:(id)sender {

    if (CheckBox.selected == NO)
    {
          CheckBox.selected = YES;
          [CheckBox setBackgroundImage:[UIImage imageNamed:@"checked_checkbox.png"] forState:UIControlStateNormal];       
    }
    else
    {
          CheckBox.selected = NO;
          [CheckBox setBackgroundImage:[UIImage imageNamed:@"uncheck_checkbox.png"] forState:UIControlStateSelected];     
    }
}
+4
source share
7 answers

Your code is completely correct, only you replace UIControlStateSelectedwith UIControlStateNormal.

+3
source

try it

if (sender.tag==0)
{
    sender.tag = 1;
    [sender setImage:[UIImage imageNamed:@"uncheck.png"] forState:UIControlStateNormal];

}
else
{
    sender.tag=0;
    [sender setImage:[UIImage imageNamed:@"check.png"] forState:UIControlStateNormal];
}
+2
source

IB ( viewDidLoad) ,

- (IBAction)checkBoxAction:(UIButton *)sender {
  sender.selected = !sender.selected;
}
+2

, , , , .
- , , , .

+1

, CheckBox.selected = YES/NO;

, :

    - (void)viewDidLoad {
        [super viewDidLoad];

        CheckBox.selected = NO;

        [CheckBox setBackgroundImage:[UIImage imageNamed:@"uncheck_checkbox.png"] forState:UIControlStateNormal];
        [CheckBox setBackgroundImage:[UIImage imageNamed:@"checked_checkbox.png"] forState:UIControlStateSelected];
    }

- (IBAction)CheckBox:(id)sender {

    if (CheckBox.selected == NO)
    {
          CheckBox.selected = YES;    
    }
    else
    {
          CheckBox.selected = NO;     
    }
}
+1
- (IBAction)changeState:(id)sender {

    UIButton *btn=(UIButton *)sender;

    if (btn.selected == NO)
    {
        btn.selected = YES;
        [btn setBackgroundImage:[UIImage imageNamed:@"checked_checkbox.png"] forState:UIControlStateNormal];
    }
    else
    {
        btn.selected = NO;
        [btn setBackgroundImage:[UIImage imageNamed:@"uncheck_checkbox.png"] forState:UIControlStateNormal];
    }
}
+1

You must set the boolean value to false in viewDidLoad, and then click

- (IBAction)btnCheckBoxClick:(id)sender
{
    if (isChecked)
    {
        [btnCheckBox setImage:[UIImage imageNamed:@"btncheckbox.png"] forState:UIControlStateNormal];
        isChecked = false;
    }
    else
    {
        [btnCheckBox setImage:[UIImage imageNamed:@"btncheckbox_selected.png"] forState:UIControlStateNormal];
        isChecked = true;
    }
}
0
source

Source: https://habr.com/ru/post/1621062/


All Articles