【发布时间】:2013-03-10 15:32:06
【问题描述】:
当您点击UITableView 中的一行时,该行会突出显示并被选中。是否可以禁用此功能,以便点击一行什么都不做?
【问题讨论】:
标签: ios
当您点击UITableView 中的一行时,该行会突出显示并被选中。是否可以禁用此功能,以便点击一行什么都不做?
【问题讨论】:
标签: ios
您可以简单地为 OBJ C 执行此操作:
cell.selectionStyle = UITableViewCellSelectionStyleNone;
【讨论】:
对于 Swift 4
cell.selectionStyle = UITableViewCell.SelectionStyle.none
【讨论】:
这是针对您有一个自定义单元格的情况,但我在寻找答案时发现了这个问题,所以我想我会把它留在这里以防它帮助其他人.
转到您的自定义单元格,并在 awakeFromNib 方法中将 selectionStyle 设置为 .none:
override func awakeFromNib() {
super.awakeFromNib()
// disable selection
selectionStyle = .none;
}
如果您在多个UITableViews 中使用此自定义单元格,您只需在自定义单元格中设置一次,而不是在您使用的每个UITableView 上设置一次:)
【讨论】:
对于 Swift 3:
cell.selectionStyle = UITableViewCellSelectionStyle.none
【讨论】:
cell.selectionStyle = UITableViewCellSelectionStyleNone;
或[cell setSelectionStyle:UITableViewCellSelectionStyleNone];
此外,请确保您要么不在 table view delegate 中实现 -tableView:didSelectRowAtIndexPath:,要么明确排除您不希望执行的单元格。
【讨论】:
如果您想停止突出显示,请使用以下代码:您想要的值为 19
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
if(indexpath.row == '19')
cell.selectionStyle = UITableViewCellSelectionStyleNone;
else
cell.selectionStyle = UITableViewCellSelectionStyleGray;
}
但是,如果你想控制单元格的选择
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
if(indexpath.row == '19')
[tableView deselectRowAtIndexPath:indexPath animated:NO];
}
【讨论】:
cell.selectionStyle = UITableViewCellSelectionStyleNone;
【讨论】:
实现UITableView的tableView:willSelectRowAtIndexPath:委托方法并返回nil。从此方法返回nil告诉表视图不要选择行,因此tableView:didSelectRowAtIndexPath:方法将不会被调用。但是这样做并不会阻止突出显示行。要禁用对行设置单元格选择样式的突出显示效果到UITableViewCellSelectionStyleNone,如上述答案中所述。
【讨论】:
刚刚设置:
cell.selectionStyle = UITableViewCellSelectionStyleNone;
【讨论】: