我知道这个问题经常被问到,我已经应用了很多代码但仍然没有得到解决方案。
我有三个单选按钮,当我选择 radiobutton1
时它显示显示按钮,现在我希望当用户单击 radiobutton1
它显示按钮时,第一个按钮被预选如果用户想从选项中选择其他按钮,按钮背景颜色和文本颜色应该改变。
我正在尝试一些代码,但只有第一个按钮的颜色发生了变化,而其他按钮的颜色并没有发生变化。我的代码是:
-(void)btnClick:(UIButton *)sender{
switch (sender.tag) {
case 1:
if ([rd1 isSelected]==YES ) {
[rd1 setSelected:YES];
}
else{
[rd1 setSelected:YES];
[rd2 setSelected:NO];
[rd3 setSelected:NO];
_house.hidden=NO;
_flat.hidden=NO;
_upperP.hidden=NO;
_lowerP.hidden=NO;
_farmH.hidden=NO;
_roomB.hidden=NO;
_pentH.hidden=NO;
_resident.hidden=YES;
_commercial.hidden=YES;
_agricult.hidden=YES;
_industry.hidden=YES;
_plot.hidden=YES;
_plotF.hidden=YES;
_office.hidden=YES;
_shop.hidden=YES;
_wareH.hidden=YES;
_factory.hidden=YES;
_building.hidden=YES;
_other.hidden=YES;
if ([_house isSelected]==YES) {
House=_house.titleLabel.text;
NSLog(@"Button is %@",House);
_flat.enabled=NO;
_upperP.enabled=NO;
_lowerP.enabled=NO;
_farmH.enabled=NO;
_roomB.enabled=NO;
_pentH.enabled=NO;
}
else if ([_flat isSelected]==YES) {
_house.enabled=NO;
_upperP.enabled=NO;
_lowerP.enabled=NO;
_farmH.enabled=NO;
_roomB.enabled=NO;
_pentH.enabled=NO;
}
[self BgColor];
}
break;
case 2:
if ([rd2 isSelected]==YES ) {
[rd2 setSelected:NO];
}
else{
[rd2 setSelected:YES];
[rd1 setSelected:NO];
[rd3 setSelected:NO];
_resident.hidden=NO;
_commercial.hidden=NO;
_agricult.hidden=NO;
_industry.hidden=NO;
_plot.hidden=NO;
_plotF.hidden=NO;
_house.hidden=YES;
_flat.hidden=YES;
_upperP.hidden=YES;
_lowerP.hidden=YES;
_farmH.hidden=YES;
_roomB.hidden=YES;
_pentH.hidden=YES;
_shop.hidden=YES;
_wareH.hidden=YES;
_factory.hidden=YES;
_building.hidden=YES;
_other.hidden=YES;
_office.hidden=YES;
}
break;
case 3:
if ([rd3 isSelected]==YES ) {
[rd3 setSelected:NO];
}
else{
[rd3 setSelected:YES];
[rd2 setSelected:NO];
[rd1 setSelected:NO];
_office.hidden=NO;
_shop.hidden=NO;
_wareH.hidden=NO;
_factory.hidden=NO;
_building.hidden=NO;
_other.hidden=NO;
_house.hidden=YES;
_flat.hidden=YES;
_upperP.hidden=YES;
_lowerP.hidden=YES;
_farmH.hidden=YES;
_roomB.hidden=YES;
_pentH.hidden=YES;
_resident.hidden=YES;
_commercial.hidden=YES;
_agricult.hidden=YES;
_industry.hidden=YES;
_plot.hidden=YES;
_plotF.hidden=YES;
}
break;
default:
break;
}
}
-(void)BgColor{
if ([_house isSelected]==YES) {
[_house setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
_house.backgroundColor=[UIColor redColor];
}
else if (([_flat isSelected]==YES)){
[_flat setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
_flat.backgroundColor=[UIColor redColor];
}
}
最佳答案
一个可能的问题可能是您仅在 case 1:
block 内调用 [self BgColor];
。由于该方法似乎负责处理房屋和公寓的标题和背景颜色,因此也许您应该始终调用它(在 switch
语句之后)。
如果这不起作用,我的建议是将问题分解为更小的部分。例如,创建 3 个 IBAction,每个按钮一个。为每个按钮指定 socket 名称,以便您准确地知道每次要更改的内容。尝试将重复代码移至其自己的方法中。不断地小步测试,直到成功!
为了帮助您开始,here's a sample project具有一些基本的类似功能。
关于ios - 在 IOS 中单击时更改按钮文本和背景颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45146241/