0

我正在开发一个使用表格视图的应用程序。在这个表格视图上,我有一些关于表格标题的信息,我还通过在表格标题上放置一些自定义视图来自定义表格标题。

if ([imageForCheckMark.image isEqual:[UIImage imageNamed:@"crossCheckMark.png"]]||[imageForCheckMark.image isEqual:[UIImage imageNamed:@"checkMark.png"]])                  
{

}
else
{
  imageForBackGroundOfHeader.image=[UIImage imageNamed:@"head1.png"];               
} 

在上面的代码中,我已将图像与其名称匹配,并根据我在标题视图上应用的图像给出结果。但是,如果我正在处理此代码并将我的应用程序置于后台并进入前台,则此代码每次都会给出错误值。

我做错了什么?请告诉我该怎么做才能纠正它。

4

3 回答 3

1

你怎么能期待

imageForCheckMark.image = [UIImage imageNamed:@"crossCheckMark.png"] ?

这两个是不同的对象。

最好的方法是创建从 UIImage 派生的新类并使用标志来区分图像。

于 2013-02-19T11:17:10.037 回答
1
@property(nonatomic, copy) NSString *accessibilityIdentifier NS_AVAILABLE_IOS(5_0);

AccessibilityIdentifier 是一个 NSString,作为 UIKit 中的一个属性,你可以使用它来存储 UIImageView 中的图像名称。不需要子类 UIImageView 来存储 imageName。

UIImageView *imv;

当您将图像设置为 imageView 时,也设置文件名。

[imv setAccessibilityIdentifier:@"ImageName"] ;
imv.image=[UIImage imageNamed:[imv accessibilityIdentifier]];

当您验证您的情况时,只需检查:

   if ([[imv accessibilityIdentifier] isEqualToString:@"crossCheckMark.png"]||[[imv accessibilityIdentifier] isEqualToString:@"checkMark.png"])                  
        //Do this
    else
    imageForBackGroundOfHeader.image=[UIImage imageNamed:@"head1.png"];
于 2013-02-19T13:33:32.030 回答
0

替换这个

[imageForCheckMark.image isEqual:[UIImage imageNamed:@"crossCheckMark.png"]

有了这个

imageForCheckMark.image ==[UIImage imageNamed:@"crossCheckMark.png"]

所以你的情况现在看起来像这样

if ((imageForCheckMark.image ==[UIImage imageNamed:@"crossCheckMark.png"])||(imageForCheckMark.image ==[UIImage imageNamed:@"checkMark.png"]))                  
 {

 }
 else
 {
     imageForBackGroundOfHeader.image=[UIImage imageNamed:@"head1.png"];               
 } 
于 2013-02-19T11:41:13.223 回答