2011-03-19 112 views
14

我想設置我的UITableViewCells的細胞背景,但我掙扎着UIAccessoryView的背景顏色。它不會改變。細胞背景和配件

任何人都可以幫助我使背景顏色的UIAccessoryView透明(或實際上任何其他顏色)?

這是我的代碼

cell.textLabel.backgroundColor = [UIColor clearColor]; 
cell.accessoryView.backgroundColor = [UIColor clearColor]; 
cell.detailTextLabel.backgroundColor = [UIColor clearColor]; 
cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator; 

if(indexPath.row % 2) { 
    cell.contentView.backgroundColor = [UIColor clearColor]; 
} 
else { 
    cell.contentView.backgroundColor = [UIColor redColor]; 
} 

這裏是說明問題

UIAccessoryView does not change background color.

回答

46

你需要設置的UITableViewCell的backgroundView性的圖像。例如:

UIView* myBackgroundView = [[[UIView alloc] initWithFrame:CGRectZero] autorelease]; 
myBackgroundView.backgroundColor = [UIColor redColor]; 
myCell.backgroundView = myBackgroundView; 

如果你想要的東西更花哨,像一個紅色漸變背景,你會實現的UIView的子類,在drawRect:繪製一個漸變,並用它作爲backgroundView。

如果您想要自定義外觀選定的表格單元格,您還可以設置selectedBackgroundView屬性。

+0

太棒了!這是有效的,而且更容易!用漸變和'selectedBackgroundView'好主意非常感謝! – simonbs 2011-03-19 13:24:53

+0

非常感謝......在這裏呆了很久,你的回答是第一個解決它的問題。 :) – 2013-06-15 01:08:04

+0

+1爲好的答案,非常感謝。 – Shivaay 2014-02-24 06:38:15

4

在功能

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 

使用下面的代碼

cell.contentView.superview.backgroundColor = [UIColor redColor]; 

reference for more details

+1

效果很好,謝謝單行方法:-) – PetrV 2013-01-08 15:01:42

+1

謝謝你+1 – 2015-01-05 13:56:38

0

如果你想改變它的自定義類的UITableViewCell你可以使用:

override func layoutSubviews() { 
    super.layoutSubviews() 
    self.backgroundColor = UIColor.whiteColor() 
} 

更換背景awakeFromNib()init?(coder aDecoder: NSCoder)不起作用!