Ios 自定义单选按钮无法正常工作iPhone

Ios 自定义单选按钮无法正常工作iPhone,ios,objective-c,Ios,Objective C,我已经创建了2个自定义单选按钮,但选择不正常。当我按下第一个单选按钮时,它不会被选中,但当我再次按下它或如果我按下第二个单选按钮时,第一个单选按钮会响应 这是.h文件中的代码。当选择时,我使用NSString存储btn值,例如,如果选择了1st,则男性将存储在NSString中 @property (strong, nonatomic) UIButton *radio1; @property (strong, nonatomic) UIButton *radio2; @p

我已经创建了2个自定义单选按钮,但选择不正常。当我按下第一个单选按钮时,它不会被选中,但当我再次按下它或如果我按下第二个单选按钮时,第一个单选按钮会响应

这是.h文件中的代码。当选择时,我使用NSString存储btn值,例如,如果选择了1st,则男性将存储在NSString中

    @property (strong, nonatomic) UIButton *radio1;
    @property (strong, nonatomic) UIButton *radio2;
    @property (strong, nonatomic) NSString * radioString1;
    @property (strong, nonatomic) NSString * radioString2;
    -(void)radioBtnSelected:(UIButton *)btn;
.m文件中的代码

@synthesize radio1;
@synthesize radio2;
@synthesize radioString1;
@synthesize radioString2;
在viewDidLoad中创建自定义单选按钮。使用标签区分两个单选按钮

//radio btns
radio1 = [[UIButton alloc]initWithFrame:CGRectMake(112, 253, 20, 20)];

//setting the tag of btn, to switch between the two
radio1.tag = 0;

//setting the on and off background image
[radio1 setBackgroundImage:[UIImage imageNamed:@"RadioButton-Unselected.png"] forState:UIControlStateNormal];
[radio1 setBackgroundImage:[UIImage imageNamed:@"RadioButton-Selected.png"] forState:UIControlStateSelected];

//setting the action event, on what to do when the btn is clicked
[radio1 addTarget:self action:@selector(radioBtnSelected:) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:radio1];

radio2 = [[UIButton alloc]initWithFrame:CGRectMake(225, 253, 20, 20)];
radio2.tag = 1;
[radio2 setBackgroundImage:[UIImage imageNamed:@"RadioButton-Unselected.png"] forState:UIControlStateNormal];
[radio2 setBackgroundImage:[UIImage imageNamed:@"RadioButton-Selected.png"] forState:UIControlStateSelected];
[radio2 addTarget:self action:@selector(radioBtnSelected:) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:radio2];
我尝试使用断点检查问题,发现当我第一次单击单选按钮时,它没有完成if语句并跳到else部分,但当我再次选择第一个单选时,它就完成了if语句

-(void)radioBtnSelected:(UIButton *)btn{

switch ([btn tag]) {
    case 0:
        if ([radio1 isSelected] == YES) {
            [radio1 setSelected:NO];
            [radio2 setSelected:YES];
            radioString1 = @"Male";
            NSLog(@"%@", radioString1);
        }
       else{
            [radio1 setSelected:YES];
            [radio2 setSelected:NO];
            radioString1 = @"";
        }
        break;

     case 1:
        if ([radio2 isSelected] == YES) {
            [radio1 setSelected:YES];
            [radio2 setSelected:NO];
            radioString2 = @"Female";
            NSLog(@"%@", radioString2);
        }
        else{
            [radio1 setSelected:NO];
            [radio2 setSelected:YES];
            radioString2 = @"";
        }
        break;
    default:
        break;
}

}
不要把布尔比作是

请使用此表单

if ( [radio1 isSelected] )
说明:

BOOL是八位变量,所以它可以保存从-128到127的值。变量用零值表示不真实,用非零值表示真实。真理有255种不同的版本

“是”和“否”宏相应地具有整数等价物1和0

阅读更多有关BOOL和BOOL之间差异的信息

if ( [radio1 isSelected] )