iOS︰ 背景色 — — UITableView 和配件有相同的背景色

发布时间: 2017/3/21 22:52:25
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我有 UISearchBar。 当我选择的单元格时,我想整个单元格有 [UIColor grayColor];

下面的代码中,与 contentView 颜色呈灰色;然而,背景 accessoryType 颜色显示为蓝色︰

enter image description here

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {     

UITableViewCell *cell = [self.searchDisplayController.searchResultsTableView cellForRowAtIndexPath:indexPath];
    cell.contentView.backgroundColor = [UIColor grayColor];

    if (self.lastSelected && (self.lastSelected.row == indexPath.row))
    {
        cell.accessoryType = UITableViewCellAccessoryNone;
        [cell setSelected:NO animated:TRUE];
        self.lastSelected = nil;
    } else {
        cell.accessoryType = UITableViewCellAccessoryCheckmark;
        cell.accessoryView.backgroundColor = [UIColor grayColor]; // Not working
        [cell setSelected:TRUE animated:TRUE];

        UITableViewCell *old = [self.searchDisplayController.searchResultsTableView cellForRowAtIndexPath:self.lastSelected];
        old.accessoryType = UITableViewCellAccessoryNone;
        [old setSelected:NO animated:TRUE];
        self.lastSelected = indexPath;
    }

我怎么做也作为 [UIColor grayColor] 出现的蓝色?

解决方法 1:

您正在更改内容视图,只是部分的细胞视图的背景的色。

UITableViewCell representation

更改整个单元格的背景色。但是你不能那样你 tableView:didDeselectRowAtIndexPath: 因为它不会作为解释在这里工作。

注意︰ 如果您想要更改单元格的背景颜色 (通过设置通过声明的 UIView 的如上属性的单元格的背景色) 你必须做到 tableView:willDisplayCell:forRowAtIndexPath: 方法的委托并不在 tableView:cellForRowAtIndexPath: 的数据源。

在你的情况,保持跟踪的行中选定你 tableView:didSelectRowAtIndexPath: 通过在埃法尔保存该索引和重装的表视图。

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{
    _savedIndex = indexPath;
    [tableView reloadData];
}

- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath
{
    if ([_savedIndex isEqual:indexPath]) {
         cell.backgroundColor = [UIColor grayColor];
    }  
}
官方微信
官方QQ群
31647020