2011-10-26 7 views
0

私はUITableViewCellサブクラスを持っています。私はいくつかのラベルとUIImageViewを追加しました。すべてのアウトレットは、ファイルの所有者ではなくテーブルビューセル(ビュー)に接続されています。 File's Ownerにそれらを添付すると、Key-Valueに準拠していないことや、Table View Cellにそれらを添付しているというエラーが実際にその問題を解決しました。私はラベルを正しく扱うことができます。UIImageViewのtableviewセルのサブクラスがIBOutletとして機能しません

しかし私のIBOutletsの1つが正しく接続されていません:UIImageView。 IBOutletが設定されており、ラベルには画像ビューのトリックはありません。ここにいくつかのコードがあります:

[[cell imageView] initWithImage:thumbnail]; 
[self.view addSubview:[cell imageView]]; 

サムネイルがUIImageであり、これはnilではありません。 cell.imageViewもnilではありません。トップラインは正しい場所に画像を表示しません(私はxibで設定します)。実際には、最終ラインは実際に画像をスクリーンに追加しますが、適切な場所には表示されません。

ここで何が起こっているのですか? File's Owner(Key-Value Complianceの苦情なし)に正しく追加するか、Table View Cellで正しく接続することで、コンセントを正しく取得するにはどうすればよいですか。どんな助けでも大歓迎です!

敬具、

Reinder

答えて

0

このライン:

[[cell imageView] initWithImage:thumbnail]; 

はかなり奇妙に聞こえます。 imageViewが既に初期化されている場合、例えばペン先では、再度初期化する必要はありません(望ましくない結果を伴い、initはオブジェクトの存続期間中に一度呼び出さなければなりません)。代わりにimageViewインスタンスがまだalloc-initでない場合、[cell imageView]はnilになり、initWithImage:呼び出しは全く効果を持ちません。

cell.imageViewがnilではないと言うと、init methodWithImage:メソッドはおそらくイメージビューのフレームを変更し、xib以外の場所に移動された理由を説明します(おそらく、セルビューの起点)。 initWithCoder:メソッドが呼び出されたxibからイメージがロードされたときを忘れないでください。もちろん

CGRect oldFrame = cell.imageView.frame; 
UIImageView *newImageView = [[[UIImageView alloc] initWithImage:thumbnail] autorelease]; 
newImageView.frame=oldFrame; 
[self.view addSubview:newImageView]; 
cell.imageView=newImageView; 

このソリューションはエレガントではなく、あなたならば、それは良いでしょう:あなたが散歩として何ができるか

は、新しいセルで既存のセルを置き換える、このコードは(テストしていない)でありますあなたのKVCの問題を解決する可能性があります。なぜあなたがそれらのエラーを取得する理由は私には明らかではない、私はコードとxibを参照する必要があります。それはあなたが "トリックをしない"という意味を理解していません。あなたがこのようなバグに襲われない限り、トリックはありません。

関連する問題