Переключатель выбора изображения в 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];

}
}

3 ответа

Решение

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

[btnFemale setSelected:NO];

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

[btnMale setSelected:NO];

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

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

- (void) buttonPressed:(UIButton *)sender
{
for (UIButton *button in self.buttonsArray) {
    if([button isKindOfClass:[UIButton class]]){
        button.selected = (button.state & sender.state);
    }
}
Другие вопросы по тегам