我正在使用 UIButton 和xib backgroundImage check_box_off.png ,同时点击 atmbtn backgroundImage更改为 check_box_on.png 同时 NSLog 打印 yesString 并再次单击atmbtn backgroundImage中没有相同的变化 check_box_on.png < / strong>同时NSLog打印只相同 yesString ..一次又一次地使atmbutton叮当作响...
- (IBAction)atmAction:(id)sender{
if( [atmbtn backgroundImageForState:UIControlStateNormal] ==
[UIImage imageNamed:@"check_box_on.png"] ) {
[atmbtn setImage:[UIImage imageNamed:@"check_box_off.png"]
forState:UIControlStateNormal];
noString = @"No";
NSLog(@"atm=%@",noString);
} else if( [atmbtn backgroundImageForState:UIControlStateNormal] ==
[UIImage imageNamed:@"check_box_off.png"]) {
[atmbtn setImage:[UIImage imageNamed:@"check_box_on.png"]
forState:UIControlStateNormal];
yesString = @"Yes";
NSLog(@"atm = %@",yesString);
}
}
输出:
NSLog打印:
大气压=是
大气压=是
大气压=是
我怎么解决这个问题?请分享您的想法。
答案 0 :(得分:1)
使用它:
[atmbtn setBackgroundImage:[UIImage imageNamed:@"check_box_on.png"] forState:UIControlStateNormal];
答案 1 :(得分:0)
设置 BOOL变量而不是条件
.h文件
BOOL _isClicked;
.m文件
-(IBAction)atmAction:(id)sender{
if(!isClicked){
[atmbtn setImage:[UIImage imageNamed:@"check_box_off.png"]
forState:UIControlStateNormal];
_isClicked = YES;
} else {
[atmbtn setImage:[UIImage imageNamed:@"check_box_on.png"]
forState:UIControlStateNormal];
_isClicked = NO;
}
}
答案 2 :(得分:0)
您正在设置UIImage
,而您正在查看backgroundImage
。
尝试
if([atmbtn imageForState:UIControlStateNormal] ==
[UIImage imageNamed:@"check_box_on.png"])
而不是
if([atmbtn backgroundImageForState:UIControlStateNormal] ==
[UIImage imageNamed:@"check_box_on.png"])
答案 3 :(得分:0)
您只需使用
即可 [atmbtn setBackgroundImage:[UIImage imageNamed:@"check_box_off.png"]
forState:UIControlStateNormal];
[atmbtn setBackgroundImage:[UIImage imageNamed:@"check_box_on.png"]
forState:UIControlStateSelected];
其中atmbtn
是xib中按钮的出口。
答案 4 :(得分:0)
您可以尝试使用isEqual
方法而不是==
,因为您要比较对象而不是值。试试这个:
-(IBAction)atmAction:(id)sender{
if([[atmbtn imageForState:UIControlStateNormal]
isEqual:[UIImage imageNamed:@"check_box_on.png"]] ) {
[atmbtn setImage:[UIImage imageNamed:@"check_box_off.png"]
forState:UIControlStateNormal];
noString = @"No";
NSLog(@"atm = %@",noString);
} else if( [[atmbtn imageForState:UIControlStateNormal]
isEqual:[UIImage imageNamed:@"check_box_off.png"]] ){
[atmbtn setImage:[UIImage imageNamed:@"check_box_on.png"]
forState:UIControlStateNormal];
yesString = @"Yes";
NSLog(@"atm = %@",yesString);
}
}