当不再选择单元格或选择其他单元格时,如何消除在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仍然不会消失,它已经复制了视图。我怎么想解决这个问题?需要建议.. :(谢谢..
答案 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];