Question

Hello i am using button as a radio button in my app. App is haveing two button as Male and female once use choose male its image change to green if select again its image shoulg grey. Same is happeningn for female button. This working is good. But when i am selected male then i have slect female then male button chage to grey coz at a time you can select only onw gender. My problem is when i am selecting male then after selecting female male button image is chaging but if user want to set gender male it need to press two times???

-(IBAction)selectMale:(id) sender{ // MALE BUTTON
UIButton *RadioButton1 = (UIButton*)sender;
[self radiobuttonAction:RadioButton1];
}

-(void)radiobuttonAction:(UIButton *)Button
{
if(![Button isSelected])
{
    [Button setSelected:YES];
    [Button setImage:[UIImage imageNamed:@"radio_active.png"] forState:UIControlStateSelected];
    gender = @"Male";
    [btnFemale setImage:[UIImage imageNamed:@"radio.png"] forState:UIControlStateSelected];

}
else
{
    [Button setSelected:NO];
    [Button setImage:[UIImage imageNamed:@"radio.png"] forState:UIControlStateNormal];
}
 }

-(IBAction)selectFemale:(id) sender{
UIButton *RadioButton1 = (UIButton*)sender;
[self radiobuttonActionFemale:RadioButton1];
 }
-(void)radiobuttonActionFemale:(UIButton *)Button
{
if(![Button isSelected])
{
    [Button setSelected:YES];
    [Button setImage:[UIImage imageNamed:@"radio_active.png"] forState:UIControlStateSelected];
    gender = @"Female";
    [btnMale setImage:[UIImage imageNamed:@"radio.png"] forState:UIControlStateSelected];
}
else
{
    [Button setSelected:NO];
    [Button setImage:[UIImage imageNamed:@"radio.png"] forState:UIControlStateNormal];

}
}
Was it helpful?

Solution

In radiobuttonAction Method, add line at last in if condition:

[btnFemale setSelected:NO];

And In radiobuttonActionFemale method, add line at last in if condition:

[btnMale setSelected:NO];

OTHER TIPS

Try resetting the opposite gender (for example reset btnFemale when btnMale is pressed)radio Button before setting the new gender..

Try this approach. Add all buttons (males and females) to array and in button action handler change button states:

- (void) buttonPressed:(UIButton *)sender
{
for (UIButton *button in self.buttonsArray) {
    if([button isKindOfClass:[UIButton class]]){
        button.selected = (button.state & sender.state);
    }
}
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top