我正在开发一个简单的计算器来汇总视图中3张图像的价格。这些图像存储在图像视图中。每个图像视图内的图像可以使用按钮1-6等进行更改。价格显示在底部的标签上。
我正在使用if语句来说明xyz imageview中的图像是否为@“zyx”,请将价格设为yzx。
我知道计算器有效,因为计算器总是采用“else”值(即使我为else值设置的价格发生变化)
if(
self.topimage.image == [UIImage imageNamed:@"image.png"]){
self.TopImageView.Price = 200;
}
else if(
self.topimage.image == [UIImage imageNamed:@"slacks.png"]){
self.TopImageView.Price = 400;
}
else {
self.TopImageView.Price = 9;
}
Xcode无法识别imageview中的图像何时等于任何名称/不更新价格的图像。
我也试过直接从阵列中拉出图像而不是命名它:
if(
self.topimage.image == [UIImage imageNamed:[self.imagesArray objectAtIndex: 1]]){
self.TopImageView.Price = 200;
}
并且标签上的价格仍然没有变化。我假设这是因为imageview的价格没有变化。
标签上的价格由:
给出_totalprice = (self.TopImageView.Price + self.MiddleImageView.Price + self.BottomImageView.Price);
self.Pricelabel.text = [NSString stringWithFormat:@"£%.0f", _totalprice];
定义了所有属性,程序运行时没有错误。计算器本身可以正常地对if子句中的'else'值进行求和。所有图像都在xcode中的“支持文件”下,我知道拉它们不会有问题,因为它们在应用程序中从数组中拉出时显示在应用程序中。
这里,举个例子,我在一个按钮下面的所有代码都是:
- (IBAction)Button2:(UIButton *)sender {
self.clothesindex = self.clothesindex - 1;
if (self.clothesindex == (-1)) {
self.clothesindex = 2;
}
self.topimage.image = [UIImage imageNamed:[self.imagesArray objectAtIndex: self.clothesindex ]];
if(
self.topimage.image == [UIImage imageNamed:@"image.png"]){
self.TopImageView.Price = 200;
}
else if(
self.topimage.image == [UIImage imageNamed:@"slacks.png"]){
self.TopImageView.Price = 400;
}
else {
self.TopImageView.Price = 9;
}
_totalprice = (self.TopImageView.Price + self.MiddleImageView.Price + self.BottomImageView.Price);
self.Pricelabel.text = [NSString stringWithFormat:@"£%.0f", _totalprice];
}
其中“top image”是imageview,“TopImageView”是一个类,“Price”是该类的属性。
非常感谢任何帮助。
答案 0 :(得分:0)
要比较图像,您可以使用此方法,
- (BOOL)image:(UIImage *)image1 isEqualTo:(UIImage *)image2
{
NSData *data1 = UIImagePNGRepresentation(image1);
NSData *data2 = UIImagePNGRepresentation(image2);
return [data1 isEqual:data2];
}
答案 1 :(得分:0)
你应该这样做:
NSString* imageName = [self.imagesArray objectAtIndex: self.clothesindex ];
if([imageName isEqualToString:@"image.png"]){
self.TopImageView.Price = 200;
}
else if([imageName isEqualToString:@"slacks.png"]){
self.TopImageView.Price = 400;
}
else {
self.TopImageView.Price = 9;
}