2011-08-14 6 views
6

現在、ボタンがどの画像を使用しているかを確認することができるかどうかを調べようとしています。Xcodeでボタン画像を確認する方法

私はimage1とimage2を持っていると言います。

ボタン画像が画像1の場合はこれを行い、ボタン画像が画像2の場合はそれを行います。

しかし、Xcodeのdoesntのは

[m1 setImage:[UIImage imageNamed: @"Penguin.png"] forState:UIControlStateNormal]; 

これは私が画像を設定する方法です....私に任意のオートフィルオプションを与えます。ペンギンやペンギン2をどうやって見つけたらいいですか?

答えて

6

ココアタッチはModel-View-Controllerパターンの周りに設計されていますので、そのパターンを採用してみてください。状態情報(選択されたペンギン)をビュー(ボタン)から取得する代わりに、コントローラクラスのインスタンス変数に格納します。

画像を設定するためのコードは次のようになります。

self.currentImage = @"Penguin.png"; 
[m1 setImage:[UIImage imageNamed: currentImage] forState:UIControlStateNormal]; 

次にあなたが値をチェックする必要がある場合:画像の平等をチェック

if ([@"Penguin.png" isEqual:self.currentImage]) { 
    do something; 
} 
3

がそうのように行われます。

if ([[UIImage imageNamed:@"Penguin.png"] isEqual:m1.currentImage]) { 
    // do something 
} 
+0

私はこれがうまくいくとは思わないあなたは同じ父親からの2つの異なるインスタンスを比較しようとしています。それは常に偽を印刷する必要があります –

+0

私のマシンで動作します。やってみて。 – nicholjs

+0

これは、[UIImage imageNamed:]メソッドからイメージをm1に設定した場合にのみ使用できます。これは、常に使用されている接続を保持するためですが、[[UIImage alloc] initWithContentsOfFile:]で設定しようとすると、 –

2

2つの方法をこのために使用できます。

1.

UIImage *image = self.myButton.currentBackgroundImage; 

2.

myImageView.image = [myButton backgroundImageForState:myButton.state]; 
2
UIImage *img=[(UIButton *) sender currentImage]; 

if(img == [UIImage imageNamed:@"edit"]) 
{ 
    //If do something 
}` 

それは

+0

それが動作しない場合は、@ "edit.png"または画像の形式を追加してください。私のためには正しく働いている – krishh

5

に動作します。この希望を試すにはちょうど画像に基づいてボタンアクションのためにこのコードを使用

- (IBAction)checkButtonClicked:(UIButton *)sender { 

    if ([checkButton.currentImage isEqual:[UIImage imageNamed:@"checkbox.png"]]) 
     [checkButton setImage:[UIImage imageNamed:@"Checked.png"] forState:UIControlStateNormal]; 
//do some thing here for your image1 

     else 
    [checkButton setImage:[UIImage imageNamed:@"checkbox.png"] forState:UIControlStateNormal]; 
    //do some thing here for your image 2 

} 
関連する問題