我有一个表格视图
当我单击单元格时,一切都很好
但是,当我将手指从手机上移开时,单元格仍处于选中状态
当用户停止触摸给定单元格并且不触摸另一个单元格时,如何使其取消选中
我有一个表格视图
当我单击单元格时,一切都很好
但是,当我将手指从手机上移开时,单元格仍处于选中状态
当用户停止触摸给定单元格并且不触摸另一个单元格时,如何使其取消选中
简单的 :
在这种方法中:didSelectRowAtIndexPath
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
UIActionSheet *photoPicker ;
[tableView deselectRowAtIndexPath:indexPath animated:YES];
}
Have you considered to handle the touch events?
For example: Add a UITapGestureRecognizer, detect which cell is being touched by using the -(CGPoint)locationInView:(UIView *)view
method. Mark the cell as selected when the touch begins and mark as deselected when the touch ends.
在tableView:didSelectRowAtIndexPath:
中,将单元格的选定属性设置为NO
使用方法setSelected:animated:
。
例如
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
UITableViewCell * cell = [tableView cellForRowAtIndexPath:indexPath];
[cell setSelected:NO animated:YES];
}
笔记:
使用上述方法设置单元格的 selected 属性 = NO 和 animated = YES 将导致分隔符消失。我发现绕过这一点的唯一方法是设置动画 = NO,但是,如果我找到另一种方法,我会更新我的答案。
您是否已将委托分配给 UITableView?
self.tableView.delegate = self;
这就是你经历这个的原因
这不起作用 - 单元格不显示被选中的指示
您必须在中设置样式cellForRowAtIndexPath
或更改单元格willSelectRowAtIndexPath
并更改回didSelectRowAtIndexPath
. 例如
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
// ...
cell.selectionStyle = UITableViewCellSelectionStyleBlue; // or an other style
// ...
}
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
// ...
[tableView deselectRowAtIndexPath:indexPath animated:NO];
// ...
}
将以下内容放在 UITableView 委托中。
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
[cell setSelected:NO animated:YES];
}