0

ボタンの画像を設定するときは、次のstringWithFormat:ように使用します。

 [buttonImage setImage:[ImgUtil image:[NSString stringWithFormat:@"myImage_%d.png", selectNum + 1 ]] ];

その文字列を調べたい。ボタンから名前を取り戻すことができるかもしれないと思いました:

 if (buttonImage.image == [UIImage imageNamed:@"myImage_2.png"]) {
        NSLog(@"the name of the buttonImage is %@", buttonImage.image);
 }

しかし、それは機能しません。その文字列をどのように見ることができますか?

4

5 に答える 5

3

関連付けられた参照を使用して、読み込み時に文字列をキーの「名前」に添付できます。ファイルから UIImage を作成し、objective-c 関連参照 API を使用して名前を付けます。

UIImage をサブクラス化して、追加の名前を格納することもできます。

カテゴリを追加して、簡単な API を提供することもできます。

于 2012-05-28T15:35:49.630 に答える
2

いいえ、できません。

buttonImage.imageボタン内のメモリに格納されている UIImage です。

[UIImage imageNamed:@"myImage_2.png"]まったく異なる UIImage を作成します。両方の UIImage は、同じファイルから作成された可能性が非常に高く、この場合は@"myImage_2.png"、メモリ内の 2 つの別個の UIImage です。

あなたの行の==小切手:

if(buttonImage.image == [UIImage imageNamed:@"myImage_2.png"])

UIImages が同じファイルから作成されたかどうかはチェックしません。それらがメモリ内の同じ場所を指しているかどうかを確認します。それらは別々に作成され、保存された 2 つの UIImage インスタンスであるため、そうではありません。

--

いいえ、これはできません。ただし、別の方法で問題を解決できる可能性があるのは、UIButton をサブクラス化し、適切にNSString* imageFilename. (コントロールの状態ごとに異なる画像を設定する場合は、それらの画像ファイル名を格納するために複数の変数が必要になります)。次に、UIButton サブクラスのメソッドをオーバーライドしsetImage:forControlState、画像が変更されるたびにそこにファイル名を保存します。次に、次のチェックを実行できます。

if([imageFileName isEqualToString:[[NSString stringWithFormat:@"myImage_%d.png", selectNum + 1 ]])

そして、それはあなたが望む答えを得るでしょう!

于 2012-05-28T15:50:55.757 に答える
2

次の行で「「myImage_%d.png」が最終的にどうなるかをテストする」ことが必要な場合:

[buttonImage setImage:[ImgUtil image:[NSString stringWithFormat:@"myImage_%d.png", selectNum + 1 ]] ];

次に、コードを再フォーマットして単純化することをお勧めします。これにより、読みやすくなるという追加の利点が得られます。

NSString* imageName = [NSString stringWithFormat:@"myImage_%d.png", selectNum + 1 ];
NSLog(@"imageName is %@", imageName);

[buttonImage setImage:[ImgUtil image:imageName]];
于 2012-05-28T15:44:40.827 に答える
1

UIImage をクラスのインスタンスとして保存し、比較することができます。ポインターよりも多くのメモリを使用することはありません。

于 2012-05-28T15:30:53.977 に答える
0

selectNum は選択された画像を表しますよね? もしそうなら、画像を選択するときに selectNum を取得してみてください。

于 2012-05-28T15:41:12.320 に答える