0

xib backgroundImage is check_box_off.pngでUIButtonを使用していますが、atmbtn backgroundImageをクリックすると check_box_on.png に変更されますが、 NSLogはyesStringを印刷し、atmbtn再度クリックすると、backgroundImage に変更はありません。もう一度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=はい

どうすればこれを解決できますか? あなたのアイデアを共有してください。

4

5 に答える 5

1

これを使って:

[atmbtn setBackgroundImage:[UIImage imageNamed:@"check_box_on.png"] forState:UIControlStateNormal];
于 2012-10-31T10:04:47.843 に答える
0

簡単に使用できます

    [atmbtn setBackgroundImage:[UIImage imageNamed:@"check_box_off.png"]
                    forState:UIControlStateNormal];
    [atmbtn setBackgroundImage:[UIImage imageNamed:@"check_box_on.png"]
                    forState:UIControlStateSelected];

atmbtnxibのボタンの出口はどこにありますか。

于 2012-10-31T10:05:40.010 に答える
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);
    }
}
于 2012-10-31T10:06:45.393 に答える
0

if条件の代わりに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;
     }
}
于 2012-10-31T10:02:50.663 に答える
0

を設定UIImageし、チェックしていbackgroundImageます。

試す

if([atmbtn imageForState:UIControlStateNormal] ==
   [UIImage imageNamed:@"check_box_on.png"])

それ以外の

if([atmbtn backgroundImageForState:UIControlStateNormal] ==
   [UIImage imageNamed:@"check_box_on.png"])
于 2012-10-31T10:03:49.323 に答える