Цель C: Как добавить цвет во всю ячейку (с индикатором раскрытия)

Я пытаюсь добавить цвет фона в свою ячейку, но не смог раскрасить часть с индикатором раскрытия (см. снимок экрана ниже)

enter image description here

Что я могу сделать, чтобы покрасить всю ячейку? Моя реализация выглядит следующим образом.

cell.contentView.backgroundColor = [UIColor colorWithHexString:@"#FFFFCC"];

//Clear colors for labels
cell.textLabel.backgroundColor = [UIColor clearColor];
cell.detailTextLabel.backgroundColor = [UIColor clearColor];

Ответ 1

UITableViewCell подклассы UIView; вы можете установить свой цвет фона так же, как и любые другие виды. Ячейки в "сгруппированном" стилеэтническом представлении таблицы требуют еще немного работы, но это не похоже на то, что вы используете это, поэтому:

cell.backgroundColor = [UIColor colorWithHexString:@"#FFFFCC"];

Ответ 2

Мой код использует (в самой ячейке) self.backgroundColor, поэтому вы должны использовать cell.backgroundColor вместо cell.contentView.backgroundColor. ContentView не включает в себя представление индикатора выбора, о котором вы догадались, я полагаю;)

Если вы хотите, чтобы он менял цвета, если выбрано, используйте selectedBackgroundView.backgroundColor

Ответ 3

цвет uiview с теми же границами, что и ячейка, и добавьте его как subview




- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"Cell";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
        cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
    }

    UIView *colorView = [cell viewWithTag:200];
    if(!colorView){
        colorView = [[[UIView alloc] initWithFrame:CGRectMake(0, 0, tableView.frame.size.width, 44)] autorelease];
        colorView.backgroundColor = [UIColor redColor];
        colorView.tag = 200;
        [cell addSubview:colorView];
    }

    return cell;
}


затем добавьте все ваши подзоны в это цветное представление.

Ответ 4

Принятый ответ не сработал у меня, но работает следующий код:

[cell.contentView setBackgroundColor:[UIColor whiteColor]];

Надеюсь, это поможет кому-то

Ответ 5

Это подтолкнуло меня. Я попробовал несколько разных подходов в методе cellForRowAtIndexPath. Я, наконец, нашел способ сделать это, чтобы переопределить метод willDisplayCell следующим образом:

- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath
{
    if(indexPath.row % 2) {
        cell.backgroundColor = [UIColor whiteColor];
    } else {
        cell.backgroundColor = [UIColor colorWithRed:225.0/255.0 green:225.0/255.0 blue:225.0/255.0 alpha:1.0];
    }
}

Ответ 6

UIImageView

UIImageView с изображением шеврона с правой стороны. Предпочтительно в раскадровке, но ее можно легко управлять в коде, присоединяя ее к представлению содержимого.

Ответ 7

Будучи своим подклассом UIView, вы должны установить цвет фона аксессуара:

cell.accessoryView.backgroundColor = [UIColor clearColor];

или

cell.accessoryView.backgroundColor = [UIColor colorWithHexString:@"#FFFFCC"];