Ios 如何将self.button.currentImage与图像进行比较?

Ios 如何将self.button.currentImage与图像进行比较?,ios,objective-c,uibutton,uiimage,Ios,Objective C,Uibutton,Uiimage,我正在尝试创建一个按钮,该按钮由一个图像表示,每当按下该按钮时,该图像都会更改为另一个图像,这样我就可以知道当前选择了哪个图像 - (IBAction)imageWasPressed:(id)sender { UIImage *imageWork = [UIImage imageNamed:@"icn_work"]; NSData *data1 = UIImagePNGRepresentation(self.imageButton.currentImage); NSData *data2

我正在尝试创建一个按钮,该按钮由一个图像表示,每当按下该按钮时,该图像都会更改为另一个图像,这样我就可以知道当前选择了哪个图像

- (IBAction)imageWasPressed:(id)sender {
   UIImage *imageWork = [UIImage imageNamed:@"icn_work"];
NSData *data1 = UIImagePNGRepresentation(self.imageButton.currentImage);
NSData *data2 = UIImagePNGRepresentation(imageWork);

if (data1==data2){
    [self.imageButton setImage:[UIImage imageNamed:@"icn_personal"] forState:UIControlStateNormal];}
}
我也试过这个,但不起作用:

- (IBAction)imageWasPressed:(id)sender {
if ([[self.imageButton imageForState:UIControlStateNormal] isEqual:[UIImage imageNamed:@"icn_work"]]){
    [self.imageButton setImage:[UIImage imageNamed:@"icn_personal"] forState:UIControlStateNormal];}
}    
更改图像的行可以工作,但我无法比较这两个图像。任何帮助都将不胜感激!谢谢大家!

if ([data1 isEqualToData: data2])
而不是

if (data1==data2)
而不是

if (data1==data2)

这是一种非常非传统的方法,我建议您以其他方式跟踪您的选择

但要回答手头的问题,它不起作用,因为您是在比较指针,而不是数据。
data1*
将始终与
data2*
不同

从文件中: 等质量数据: 将接收数据对象与其他数据进行比较


这是一种非常非传统的方法,我建议您以其他方式跟踪您的选择

但要回答手头的问题,它不起作用,因为您是在比较指针,而不是数据。
data1*
将始终与
data2*
不同

从文件中: 等质量数据: 将接收数据对象与其他数据进行比较


如果要更改按钮图像的状态,可以为不同的状态指定不同的图像

[self.imageButton setImage:image1 forState:UIControlStateNormal];
[self.imageButton setImage:image2 forState:UIControlStateHighlighted];
[self.imageButton setImage:image3 forState:UIControlStateSelected];

由于您可以获取按钮状态,并且您知道为该状态设置的图像,因此您也可以获取图像。

如果您想更改按钮图像的状态,您可以为不同的状态分配不同的图像

[self.imageButton setImage:image1 forState:UIControlStateNormal];
[self.imageButton setImage:image2 forState:UIControlStateHighlighted];
[self.imageButton setImage:image3 forState:UIControlStateSelected];

由于您可以获取按钮状态,并且您知道为该状态设置的图像,因此您也可以获取图像。

您是否尝试过
[data1 isEqual:data2]
?另外,您可能不应该通过比较图像来获取此信息。保留一个BOOL,比如,
if(self.personalSelected)
在选择按钮时更改它。@daltonclaybrook我以前试过,但没有用。看起来它现在正在工作,哈哈?非常感谢你的回答!检查此项:您是否尝试过
[data1isequal:data2]
?另外,您可能不应该通过比较图像来获取此信息。保留一个BOOL,比如,
if(self.personalSelected)
在选择按钮时更改它。@daltonclaybrook我以前试过,但没有用。看起来它现在正在工作,哈哈?非常感谢你的回答!选中此项: