![](/img/trans.png)
[英]How to change UIButton backgroundimage when tag value is known?
[英]How to change UIButton backgroundimage while clicking same UIbutton?
我在xib backgroundImage是check_box_off.png的情況下使用UIButton ,同時單擊atmbtn backgroundImage更改為check_box_on.png,同時NSLog打印yesString ,再次單擊atmbtn,backgroundImage相同check_box_on.png不變,而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打印:
atm =是
atm =是
atm =是
我該如何解決? 請分享您的想法。
用這個:
[atmbtn setBackgroundImage:[UIImage imageNamed:@"check_box_on.png"] forState:UIControlStateNormal];
設置一個BOOL變量而不是if條件
.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;
}
}
您正在設置UIImage
並且正在檢查backgroundImage
。
嘗試
if([atmbtn imageForState:UIControlStateNormal] ==
[UIImage imageNamed:@"check_box_on.png"])
代替
if([atmbtn backgroundImageForState:UIControlStateNormal] ==
[UIImage imageNamed:@"check_box_on.png"])
您可以簡單地使用
[atmbtn setBackgroundImage:[UIImage imageNamed:@"check_box_off.png"]
forState:UIControlStateNormal];
[atmbtn setBackgroundImage:[UIImage imageNamed:@"check_box_on.png"]
forState:UIControlStateSelected];
其中atmbtn
是atmbtn
中按鈕的插座。
嗨,嘗試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);
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.