0

セルの数が「n」のテーブルビューがあります。問題はセルの背景画像にあります。

UITableViewCellのアップルのドキュメントが具体的に次のように述べているという事実を私はすでに知っています:

注:セルの背景色を変更する場合(UIViewで宣言されたbackgroundColorプロパティを使用してセルの背景色を設定することにより)、tableViewではなくデリゲートのtableView:willDisplayCell:forRowAtIndexPath:メソッドで変更する必要があります。 :cellForRowAtIndexPath:データソースの。

上記の説明はここでも見ることができます

しかし、私の懸念はセルの色を変更することではなく、セルの背景画像を設定することです。私たちが知っているように、背景色プロパティを使用して背景画像を設定できます。

if (cell == nil) 
{
   cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:kCellIdentifier] autorelease];
   cell.backgroundColor = [[UIColor alloc]initWithPatternImage:[UIImage imageNamed:@"buttonbg.png"]];
}

しかし、背景画像をテーブルビューセルに設定するために背景色を使用しても機能せず、画像を変更しようとして色を変更しようとすると、データソースメソッド(インデックスパスの行のセル)で上記のメソッド/プロパティが機能しないのはなぜですか)。

また、驚いたことに、画像ビューを使用し、セルの背景ビューとしてビューを設定すると完璧に機能することがわかりました。同じことが、このリンクでAmmyWorral氏によって提案されています。すなわち:

UIImage *cellImage = [UIImage imageNamed:kCellImage];
UIImageView *cellImageView = [[UIImageView alloc]initWithImage:cellImage];
[cell setBackgroundView:cellImageView];

しかし、私の疑問は、なぜ背景画像がセルの背景色法で機能しないのかということです!

これについていくつかの説明が必要です!

よろしくお願いします:)

4

2 に答える 2

1

cellForRowAtIndexPath:からセルを返した後、UITableViewがセルの外観を変更するため、機能しません。解決策は、セルをサブクラス化し、layoutSubviewsメソッドをオーバーライドして、そこでカスタマイズを行うことです。

于 2012-07-27T06:28:00.647 に答える
1

テーブルビューは、セルの背景色を自動的に独自の色に設定します。そしてそれはAFTER-tableView:cellForRowAtIndexPath:、もちろん:)あなたには2つのオプションがあります:1)セルに余分なビューを追加し、その背景色を設定します(ほとんどあなたがしたこと)2)-tableView:willDisplayCellAtIndexPathを実装します:データソース/デリゲート(またはそれらの行の中の何か、正確な名前についてはアップルのドキュメントを参照)で、セルの背景色を手動で設定します。

于 2012-07-27T08:08:52.807 に答える