Iphone 3按钮选择
在我的应用程序中,我有3个按钮,当选择任何1个按钮时,我想禁用剩下的2个按钮,我尝试了以下逻辑,这里是我用来执行它的代码,但工作不正常Iphone 3按钮选择,iphone,ios6,uibutton,Iphone,Ios6,Uibutton,在我的应用程序中,我有3个按钮,当选择任何1个按钮时,我想禁用剩下的2个按钮,我尝试了以下逻辑,这里是我用来执行它的代码,但工作不正常 -(void)checkboxSelected13:(id)sender { UIButton *btn = (UIButton *) sender; if([btn isSelected]) { [bt27 setSelected:YES]; [bt28 setSel
-(void)checkboxSelected13:(id)sender
{
UIButton *btn = (UIButton *) sender;
if([btn isSelected])
{
[bt27 setSelected:YES];
[bt28 setSelected:NO];
[bt29 setSelected:NO];
}
else if ([btn isSelected]) {
[bt27 setSelected:NO];
[bt28 setSelected:YES];
[bt29 setSelected:NO];
}
else
{
[bt27 setSelected:NO];
[bt28 setSelected:NO];
[bt29 setSelected:YES];
}
}
我的代码有什么问题?请帮忙
if([btn isSelected]
)
{
[bt27 setSelected:YES];
[bt28 setSelected:NO];
[bt29 setSelected:NO];
}
else if ([btn isSelected]) {
[bt27 setSelected:NO];
[bt28 setSelected:YES];
[bt29 setSelected:NO];
}
...
您在if和else if中检查相同的条件[btn isSelected],请更改其中一个条件。您应该这样做,并将不同的图像作为xib文件中按钮选定状态的背景图像,以便轻松区分
-(void)checkboxSelected13:(id)sender
{
UIButton *btn = (UIButton *) sender;
if((btn == bt27) && ![btn isSelected])
{
[bt27 setSelected:YES];
[bt28 setSelected:NO];
[bt29 setSelected:NO];
}
else if ((btn == bt28) && ![btn isSelected]) {
[bt27 setSelected:NO];
[bt28 setSelected:YES];
[bt29 setSelected:NO];
}
else if ((btn == bt29) && ![btn isSelected])
{
[bt27 setSelected:NO];
[bt28 setSelected:NO];
[bt29 setSelected:YES];
}
}
为按钮指定选项卡。然后检查:
-(void)checkboxSelected13:(id)sender
{
UIButton *btn = (UIButton *) sender;
if(btn.tag == tagAssignedToButton27)
{
[bt27 setSelected:YES];
[bt28 setSelected:NO];
[bt29 setSelected:NO];
}
else if(btn.tag == tagAssignedToButton28)
{
[bt27 setSelected:NO];
[bt28 setSelected:YES];
[bt29 setSelected:NO];
}
else if(btn.tag == tagAssignedToButton29)
{
[bt27 setSelected:NO];
[bt28 setSelected:NO];
[bt29 setSelected:YES];
}
}
更优化的方法是在函数中使用开关盒复选框selected13
if([bt27 isSelected]) {
[bt27 setSelected:YES];
[bt28 setSelected:NO];
[bt29 setSelected:NO];
} else if ([bt28 isSelected]) {
[bt27 setSelected:NO];
[bt28 setSelected:YES];
[bt29 setSelected:NO];
} else if ([bt29 isSelected]) {
[bt27 setSelected:NO];
[bt28 setSelected:NO];
[bt29 setSelected:YES];
} else {
[bt27 setSelected:NO];
[bt28 setSelected:NO];
[bt29 setSelected:NO];
}
从逻辑上讲,这就是你想要的。目前还不清楚btn和btXY之间的关系。这里的主要问题是逻辑和代码重复。尽管另一种类型的控件最适合您所追求的内容(例如
UISegmentedControl
),但您可以尝试用更抽象的想法来解决相同的问题,可能是这样的(请注意,所有按钮现在都触发相同的方法):
您在if-else部分中检查相同的条件“if([btn isSelected])。这可能会引起混乱。您的代码无法正常工作 您的代码看起来太长,而且很复杂: 您可以直接执行: 为按钮指定标签属性,如button1=1、button2=2和button3=3 现在检查以下代码:
-(IBAction)checkboxSelected:(id)sender
{
UIButton *btn = (UIButton *) sender;
switch (btn.tag) {
case 1:
[btn1 setSelected:YES];
[btn2 setSelected:NO];
[btn3 setSelected:NO];
break;
case 2:
[btn1 setSelected:NO];
[btn2 setSelected:YES];
[btn3 setSelected:NO];
break;
case 3:
[btn1 setSelected:NO];
[btn2 setSelected:NO];
[btn3 setSelected:YES];
break;
default:
[btn1 setSelected:NO];
[btn2 setSelected:NO];
[btn3 setSelected:NO];
break;
}
}
希望这会对你有所帮助
干杯 您可能需要一个UISegmentedControl或一个单选组。问题是,您的按钮和方法的名称很难理解。
-(IBAction)checkboxSelected:(id)sender
{
UIButton *btn = (UIButton *) sender;
switch (btn.tag) {
case 1:
[btn1 setSelected:YES];
[btn2 setSelected:NO];
[btn3 setSelected:NO];
break;
case 2:
[btn1 setSelected:NO];
[btn2 setSelected:YES];
[btn3 setSelected:NO];
break;
case 3:
[btn1 setSelected:NO];
[btn2 setSelected:NO];
[btn3 setSelected:YES];
break;
default:
[btn1 setSelected:NO];
[btn2 setSelected:NO];
[btn3 setSelected:NO];
break;
}
}