改变cell.accessoryView和cell.editingAccessoryView的背景颜色

Zak*_*Zak 26 iphone uitableview accessoryview

每当我将一个accessoryView添加到我的UITableViewCell时,它都没有背景颜色?我正在设置一个UISwitch作为我的accessoryView,我在cell.backgroundColor属性中设置的颜色只影响contentView而不影响accessoryView.我已经尝试了一切将它们设置为相同的值.我试图将cell.backgroundView.backgroundColor和cell.accessoryView.backgroundColor属性设置为我想要的颜色,但没有任何工作.我还尝试在contentView中创建一个子视图,它解决了backgroundColor问题(通过避免它),但它产生了问题,当文本太长时,开关位于cell.textLabel的顶部.

有没有办法在不在contentView中创建子视图的情况下修改accessoryView的背景颜色,或者在没有子类化UITableViewCell的情况下改变cell.textLabel的长度?

Zak*_*Zak 57

在阅读文档(一个新颖的想法)后,我发现了一篇文章" 仔细研究表视图细胞 ".它帮助我了解细胞的组成,我找到了答案......

细胞看起来像这样......

替代文字

由于cell.accessoryView是cell.contentView的姐妹视图,我不得不向cell.contentView询问其superview,然后我能够一次更改两个视图的背景颜色.这是代码的样子......

// Cell Formatting
cell.contentView.superview.backgroundColor = [UIColor greenColor];
Run Code Online (Sandbox Code Playgroud)

我知道这很简单,但我是一个新手,我花了很长时间才放慢速度并阅读文档.希望,这有助于其他一些人!

  • 我知道它有点晚了,但你需要在`tableView:willDisplayCell:forRowAtIndexPath:`方法:)中设置单元格的颜色 (7认同)
  • 这对我有帮助,但作为一个额外的步骤,我必须确保不要在“UITableViewCell”的“超类”上调用任何“setSelected”方法。看起来这将 **accessoryView** 的背景颜色设置为默认选择颜色。 (2认同)

小智 44

- (void) tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath
{
    cell.backgroundColor = [UIColor yellowColor];
}
Run Code Online (Sandbox Code Playgroud)


Ada*_*V C 15

 UIView *myView = [[UIView alloc] initWithFrame:cell.frame];
 myView.backgroundColor = [UIColor colorWithRed:214.00/255.00 green:233.00/255.00 blue:247.00/255.00 alpha:1.0];
 cell.backgroundView = myView;
 [myView release];
Run Code Online (Sandbox Code Playgroud)