2011-02-02 5 views
1

私の問題は愚かだと知っていますが、私はそれを修正することができず、何の答えも見つかりませんでした。 カスタムUITableViewCellにIBoutlet UIImageViewがあります。私はIBでUIImageを設定しています。カスタムセルがテープに貼られたときにコードで変更したいと思います。 私のコードは以下の通りです。しかし、どういうわけかイメージは変化していません。 これは私のカスタムUItableViewCellのメソッドです。UIImageViewの画像がコードで変更されない

-(void)setExpanded:(BOOL)expand 
{ 
    if(expand) 
    { 
     [self.expandedImageView setImage:[UIImage imageNamed:@"bt_up.png"]]; 
     expanded = YES; 
     //self.infoLabel.hidden = NO; 
     //[self setNeedsDisplay]; 
    } 
    else 
    { 
     [self.expandedImageView setImage:[UIImage imageNamed:@"bt_down.png"]]; 
     expanded = NO; 
     //self.infoLabel.hidden = YES; 
     //[self setNeedsDisplay]; 
    } 

} 

「SetNeedDisplay」で試してみました。私もCustomCellの外でUIimageを変更しようとしましたが、うまくいきません。

私はそんなに時間があるため、その上だから非常に理解されるであろうすべてのヘルプ;)

に関して、

+0

imageNamed:メッセージがヌルポインタを返すかどうか確認できますか? –

+0

誰が「自己」ですか? expandedImageViewは保持され、「self」で表示されますか? – meronix

+0

私はnilポインタをチェックしましたが、imagedNamedは有効なポインタを返します。自己はカスタムUITableViewCellであり、expandedImageは自己で完全に可視です。 expandedImageはIBOutlet UIImageViewです。 – Amnysia

答えて

0

2つの考えられる理由が考えられます:

  1. あなたself.expandedImageViewがあります
  2. nilをあなたはbt_down.png、bt_up.pngという名前のイメージを持っていない
+0

self.expandedImageViewは有効なポインタで、私はそれらの画像を持っています。それは非常に奇妙です。しかし、あなたの助けに感謝します。 – Amnysia

0

イメージとプロパティが本当に有効であれば、どのスレッドがsetExpanded:を呼び出しているかを確認することをお勧めします。 UIオブジェクトはUIスレッドによってのみ変更されるべきだとCocoaは述べています。そのため、一部のタイマーまたはBGスレッドから呼び出す場合は、それが問題です。

+0

私は2番目のスレッドまたはタイマーがsetExpandedを呼び出すことはありません。非常に奇妙です。間違いがどこにあるのかは分かりません。 – Amnysia

0

(カスタムUITableViewCell)サブビューを印刷して、イメージインスタンスがリストに存在するかどうかを確認してください。存在する場合は、そのインスタンスのイメージを変更してください。

関連する問題