Objective C / XCode - Xcode无法识别ImageView中的图像

时间:2017-12-07 10:24:36

标签: ios objective-c xcode image imageview

我正在开发一个简单的计算器来汇总视图中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”是该类的属性。

非常感谢任何帮助。

2 个答案:

答案 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;

}