ボタンの画像を別の画像と比較しようとしていますが、期待どおりに機能せず、スタックオーバーフローの提案としても機能しません...
if (favoriteButton.imageView.image == [UIImage imageNamed:@"favorite.png"]) {
NSLog(@"yes!");
}
他にできることはありますか?画像ファイル名を取得しようとしましたが、不可能のようです。
ボタンの画像を別の画像と比較しようとしていますが、期待どおりに機能せず、スタックオーバーフローの提案としても機能しません...
if (favoriteButton.imageView.image == [UIImage imageNamed:@"favorite.png"]) {
NSLog(@"yes!");
}
他にできることはありますか?画像ファイル名を取得しようとしましたが、不可能のようです。
UIImage
ネイティブ型ではなく、クラスです。2 つのオブジェクトが同じデータを表しているかどうかを確認するにisEqual:
は、演算子ではなくメソッドを使用する必要があります。==
if ([favoriteButton.imageView.image isEqual:[UIImage imageNamed:@"favorite.png"]]) {
NSLog(@"yes!");
}
==
2 つのポインターがメモリ内のまったく同じ場所を参照しているかどうかを本当に確認したい場合にのみ、オブジェクト ポインターで演算子を使用してください。
imageView
画像の識別に使用してみませんか?
UIImageView *imageView_favorite = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"favorite.png"]];
UIImageView *imageView_not_favorite = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"not_favorite.png"]];
//both imageView_favorite and imageView_not_favorite can be set as an member ivar, and the favoriteButton.imageView can be set to them appropriately.
if (favoriteButton.imageView == imageView_favorite) {
NSLog(@"yes!");
}
あなたの質問のコメントを読んで、クラウドはボタンに「選択済み」などの「状態」を割り当てるだけだと思います。
通常の状態では、ボタン クラウドは「not_favorite.png」をロードします。ユーザーがボタンをタップすると、選択状態になり、対応する画像 (favorite.png) がロードされます。
将来、どの画像がロードされているかを知る必要がある場合 (または、ユーザーがボタンをお気に入りにするために既にテープで貼り付けている場合)、ボタンの状態を確認するだけです。
個人的には、ボタンのアクションを起動するためだけに画像を比較することはしません。費用がかかります。