簡體   English   中英

如何在單擊同一UIbutton的同時更改UIButton backgroundimage?

[英]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];

其中atmbtnatmbtn中按鈕的插座。

嗨,嘗試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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM