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我以前试过,但没有用。看起来它现在正在工作,哈哈?非常感谢你的回答!选中此项: