有人可以告诉我为什么这样做不对吗?
我在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
的子视图的颜色,但为什么它不起作用?
答案 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];
....
}