2012-01-01 4 views
6

「削除」ボタンの背景色であるUITableViewCell行をスワイプしたときに表示されるビューの背景色を変更しようとしています。UITableViewCellで削除するスワイプが白い背景になっている必要があります。

cell.editingAccessoryViewを変更しようとしましたが、何もしませんでした。

UIView* myBackgroundView = [[UIView alloc] initWithFrame:CGRectZero]; 
    myBackgroundView.backgroundColor = [UIColor clearColor]; 
    cell.editingAccessoryView = myBackgroundView; 

+0

解決方法を見つけましたか?私は同じ問題を抱えている:) –

答えて

7

あなたはほとんどあります。 UITableViewCellクラスにはbackgroundViewというプロパティがあります。デフォルトではnilです。あなたの質問にお答えしたとおりに新しいUIViewを作成し、それをあなたのセルのbackgroundViewプロパティに割り当ててください。

cell.backgroundView = [[[UIView alloc] initWithFrame:CGRectZero] autorelease]; 
cell.backgroundView.backgroundColor = [UIColor clearColor]; 
1

あなたのセルにコンテンツを追加する方法によって異なると思います。

[cell addSubView]または[cell.contentView addSubView]を使用して直接コンテンツをセルに追加したとき、同じ問題が発生していました。これに

私の回避策だった:

Create a view 
Add all your content(labels, images etc;) to this view 
Finally then add the view to your cell using [cell addSubView:tmpView] 

そして、あなたはもうbackgroundViewプロパティを改ざんする必要はありません。私はこれを試して、完全に動作します!

7

私は答えを見つけるまでにしばらく時間がかかりました。これは検索に表示される最初のエントリです。 willDisplayCellメソッドを使用すると、セルの背景色にアクセスできます。 [UIColor clearColor];は白を返しますので、それに応じてコードを調整してください。

-(void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath { 

    cell.backgroundColor = [UIColor blackColor]; 

} 
0

これらの答えは正しいですが、私はほとんどの場合、それは単にインタフェースビルダでセルの背景色を設定する方が簡単だと感じています。これは、セルの実際の背景色プロパティを意味し、コンテンツビューは意味しません。とにかくコンテンツの表示が常に色になる場合は、動的に行う必要はありません。

関連する問題