iOS:UITableView说明

时间:2012-01-31 02:54:33

标签: iphone objective-c ios xcode

当不再选择单元格或选择其他单元格时,如何消除在UITableView中选择单元格时创建的视图。

假设我有以下代码用于didSelectRowAtIndexPath:

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

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

    UIView *selectionView = [[UIView alloc]initWithFrame:CGRectMake(0, 0, (int)cellSize.width, (int)(cellSize.height + 100))];
    selectionView.layer.borderWidth = 2;

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

}

现在,我想删除创建的selectionView,当我专注于另一个单元格并再次创建它到我正在聚焦的单元格时..问题是当我第一次选择一个单元格时,它完美地工作但是当我选择另一个单元格,从前一个单元格创建的selectionView仍然不会消失,它已经复制了视图。我怎么想解决这个问题?需要建议.. :(谢谢..

2 个答案:

答案 0 :(得分:1)

如果您想要自定义选择UI,您真的需要查看子类UITableViewCell。然后覆盖[UITableViewCell setSelected:animated:](或[UITableViewCell setHighlighted:animated:])以执行自定义。

答案 1 :(得分:1)

您需要为tag添加selectionView,如下所示

selectionView.tag = 100;

此外,您需要通过声明NSIndexPath类成员并保留它来获取上次选择的indexPath的引用。

因此,在选择新单元格时,获取具有最后选定索引路径的单元格,并从单元格中删除视图,如下所示

UITableViewCell *lastCell = [tableView cellForRowAtIndexPath:lastSelIndexPath];
UIView *view = [lastCell viewWithTag:100];
[view removeFromSuperview];