用多项选择隐藏 UITableView 上的圆圈
Posted
技术标签:
【中文标题】用多项选择隐藏 UITableView 上的圆圈【英文标题】:Hide the circle on UITableView with multiple selection 【发布时间】:2014-02-02 08:41:38 【问题描述】:我有一个启用了多项选择的UITableView
。
我的一些单元格不会被选中。对于我实施的那些:
在tableView:cellForRowAtIndexPath:
我设置cell.selectionStyle = UITableViewCellSelectionStyleNone;
在tableView:didSelectRowAtIndexPath:
我打电话给[self.tableView deselectRowAtIndexPath:indexPath animated:NO];
。
这很好用。我唯一需要注意的是,单元格左侧的小圆圈仍然出现。当用户点击单元格时不会对其进行检查,但我希望在单元格“不可选择”时不显示它。
如何隐藏某些单元格的圆圈?
谢谢
【问题讨论】:
您是否使用 UITableView 的原生编辑模式来获取单元格上的圆圈? 是的...我设置为启用它是:self.tableView.allowsMultipleSelectionDuringEditing = YES;
如何更改圆形图像?
【参考方案1】:
您必须在表视图数据源中实现tableView:canEditRowAtIndexPath:
方法。它可以让您阻止您想要编辑的单元格,从而不显示圆圈。
请注意,设置cell.selectionStyle = UITableViewCellSelectionStyleNone;
不会阻止选择单元格。它只是删除选定单元格上的任何视觉线索。
【讨论】:
【参考方案2】:试试这个...
- (UITableViewCell*)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
if([[tableView indexPathsForSelectedRows] containsObject:indexPath])
cell.accessoryType = UITableViewCellAccessoryCheckmark;
else
cell.accessoryType = UITableViewCellAccessoryNone;
- (void)tableView:(UITableView *)tableView didDeselectRowAtIndexPath:(NSIndexPath *)indexPath
UITableViewCell* cell = [tableView cellForRowAtIndexPath:indexPath];
cell.accessoryType = UITableViewCellAccessoryNone;
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
UITableViewCell* cell = [tableView cellForRowAtIndexPath:indexPath];
cell.accessoryType = UITableViewCellAccessoryCheckmark;
【讨论】:
【参考方案3】:子类化UITableViewCell
并添加以下方法对我有用:
override func setEditing(_ editing: Bool, animated: Bool)
super.setEditing(false, animated: true);
【讨论】:
以上是关于用多项选择隐藏 UITableView 上的圆圈的主要内容,如果未能解决你的问题,请参考以下文章
UITableviewCell - 在编辑模式下单击空复选标记圆圈不会选择单元格
UIPopOverController + UITableView - 选择单元格时隐藏弹出框
UITableViewCellSeparatorStyleNone 在 UITableView 中选择时不隐藏蓝色分隔线