Изображение выбора радиокнопок в ios

Здравствуйте, я использую кнопку в качестве переключателя в своем приложении. В приложении есть две кнопки: мужской и женский. После использования выберите мужской, его изображение изменится на зеленый, если снова выбрать, его изображение должно стать серым. То же самое происходит и с женской кнопкой. Эта работа хороша. Но когда меня выбирают мужчиной, я выбираю женщину, а затем кнопка мужского пола становится серой, потому что одновременно вы можете выбрать только один пол. Моя проблема заключается в том, что когда я выбираю мужчину, то после выбора женщины мужское изображение кнопки меняется, но если пользователь хочет установить мужской пол, его нужно нажать два раза???

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

}
}

person user2902101    schedule 29.11.2013    source источник


Ответы (3)


В методе radiobuttonAction добавьте строку, наконец, в условие if:

[btnFemale setSelected:NO];

И в методе radiobuttonActionFemale добавьте строку, наконец, в условие if:

[btnMale setSelected:NO];
person SandeepM    schedule 29.11.2013

Попробуйте сбросить противоположный пол (например, сбросить btnFemale при нажатии кнопки btnMale) перед установкой нового пола.

person Dinesh    schedule 29.11.2013

Попробуйте этот подход. Добавьте все кнопки (мужские и женские) в массив и в обработчике действия кнопки измените состояние кнопки:

- (void) buttonPressed:(UIButton *)sender
{
for (UIButton *button in self.buttonsArray) {
    if([button isKindOfClass:[UIButton class]]){
        button.selected = (button.state & sender.state);
    }
}
person Eugene Prokoshev    schedule 29.11.2013