有几个简单的解决方案。也许它们不是最佳的,但您可以使用它们:
第一个解决方案:
将您的按钮与相应的属性相关联:
@property (weak, nonatomic) IBOutlet UIButton *button1;
@property (weak, nonatomic) IBOutlet UIButton *button2;
@property (weak, nonatomic) IBOutlet UIButton *button3;
在每个动作中更改每个按钮的 selected 属性:
- (IBAction)button1Clicked:(UIButton *)sender {
_button1.selected = YES;
_button2.selected = NO;
_button3.selected = NO;
}
第二种解决方案:
在 NSArray 中添加所有按钮:
NSArray *buttonsArray = [[NSArray alloc] initWithObjects: button1, button2, button3, nil];
然后用一个动作链接所有按钮:
- (IBAction)buttonClicked:(UIButton *)sender {
for (UIButton *btn in _buttonsArray) {
if (btn == sender)
btn.selected = YES;
else
btn.selected = NO;
}
}
不要忘记让类的所有方法都可以访问您的 NSArray,例如通过创建相应的属性:
@property (weak, nonatomic) NSArray *buttonsArray;
第三种解决方案:
您可以更改每个按钮的标记属性(通过 Interface Builder 或在代码中):
_button1.tag = 1;
_button2.tag = 2;
_button3.tag = 3;
然后用一个动作链接所有按钮(就像前面的例子一样):
- (IBAction)buttonClicked:(UIButton *)sender {
if (sender.tag == 1) {
_button1.selected = YES;
_button2.selected = NO;
_button3.selected = NO;
} else if (sender.tag == 2) {
_button1.selected = NO;
_button2.selected = YES;
_button3.selected = NO;
} else if (sender.tag == 3) {
_button1.selected = NO;
_button2.selected = NO;
_button3.selected = YES;
}
}
第四个解决方案:(by @velmurugan-s)
对所有按钮使用一个操作并将其默认状态设置为selected = NO:
- (IBAction)buttonClicked:(UIButton *)sender {
_button1.selected = NO;
_button2.selected = NO;
_button3.selected = NO;
sender.selected = YES;
}
总结:
我建议您使用第二种解决方案作为最佳解决方案。