UIView背景颜色不起作用

时间:2012-01-31 04:56:00

标签: objective-c ios cocoa-touch

有人可以告诉我为什么这样做不对吗?

我在tableView:didSelectAtIndexRowPath:方法的表格视图单元格中有以下代码行。

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    [[tableView viewWithTag:199]removeFromSuperview];

    CGSize cellSize = [tableView cellForRowAtIndexPath:indexPath].frame.size;

    UIView *subSelectionView = [[UIView alloc]initWithFrame:CGRectMake(10, 0, (int)cellSize.width - 20, 100)];

    [subSelectionView setBackgroundColor:[UIColor  blueColor]];

    subSelectionView.layer.borderColor = [UIColor grayColor].CGColor;
    subSelectionView.layer.borderWidth = 1;

    subSelectionView.tag = 199;    

    [[tableView cellForRowAtIndexPath:indexPath]addSubview:subSelectionView];
}

请注意代码:

[subSelectionView setBackgroundColor:[UIColor  blueColor]];

显然,我想更改我添加到UITableViewCell的子视图的颜色,但为什么它不起作用?

2 个答案:

答案 0 :(得分:2)

在表格上添加子视图后重新加载表格

[[tableView cellForRowAtIndexPath:indexPath]addSubview:subSelectionView];

[tableview reloadData];

答案 1 :(得分:1)

将以下行添加到方法的开头

[tableView deselectRowAtIndexPath:indexPath animated:NO];

所以你的方法是

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    [tableView deselectRowAtIndexPath:indexPath animated:NO];

    [[tableView viewWithTag:199]removeFromSuperview];
    ....
}