如何更改选定的单元格背景颜色而不会错过文本

时间:2014-10-11 18:55:41

标签: ios uitableview colors background

我想更改所选的单元格背景颜色并将文本保留在该单元格上。然后我确实喜欢这个,它可以改变细胞颜色,但细胞上的文字会消失。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"MessageCell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];

    cell.textLabel.text = [self.receivedData objectAtIndex:indexPath.row];

    return cell;
}

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

    static NSString *CellIdentifier = @"MessageCell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];

    UIView *bgColorView = [[UIView alloc]init];
    bgColorView.backgroundColor = [UIColor colorWithRed:0.529 green:0.808 blue:0.922 alpha:0.5];

    cell.selectedBackgroundView = bgColorView;

}

1 个答案:

答案 0 :(得分:0)

您正在使用新的UIView实例替换当前视图(已包含文本的视图)(其中没有文本,但是您的新颜色)。这就是你的文字正在消失的原因。您应该更改selectedBackgroundview的背景颜色属性,如下所示:

cell.selectedBackgroundView.backgroundColor = [UIColor colorWithRed:0.529 green:0.808 blue:0.922 alpha:0.5];

虽然我认为您甚至可以放弃selectedBackgroundView部分而只是放弃cell.backgroundColor = ...中的didSelectRowAtIndexPath