当应用程序转到后台时,if-else条件失败

时间:2013-02-19 11:12:48

标签: iphone if-statement

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

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

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

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

我做错了什么?请告诉我如何纠正它。

3 个答案:

答案 0 :(得分:1)

你怎么能指望

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

这两个是不同的对象。

这样做的最佳方法是使新类派生自UIImage,并使用flag来区分图像。

答案 1 :(得分:1)

@property(nonatomic, copy) NSString *accessibilityIdentifier NS_AVAILABLE_IOS(5_0);

accessibilityIdentifier是一个NSString,作为UIKit中的一个属性,可用于在UIImageView中存储图像的名称。不需要SubClass 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"];

答案 2 :(得分: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"];               
 }