문제

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];

}
}
도움이 되었습니까?

해결책

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];

다른 팁

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);
    }
}
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top