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"] ?

これら 2 つは別のオブジェクトです。

これを行う最善の方法は、UIImage から派生した新しいクラスを作成し、フラグを使用して画像を区別することです。

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

accessibilityIdentifier は、UIKit のプロパティとして存在する NSString であり、UIImageView に画像の名前を格納するために使用できます。imageName を格納するために UIImageView をサブクラス化する必要はありません。

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 に答える