如何使 UITableView 上的单元格不可选?

我将一个单元插入到 UITableView 的顶部。如何确保当用户单击单元格时,它不显示蓝色选定的指示器?

42916 次浏览

若要删除根据行索引选择任何表单元格或特定表单元格的能力,请使用 willSelectRowAt

func tableView(_ tableView: UITableView, willSelectRowAt indexPath: IndexPath) -> IndexPath? {




return nil
}

要简单地消除选择元素的 UI 效果,请将 selection style of the UITableViewCell设置为 UITableViewCellSelectionStyleNone

迅捷5:

selectionStyle = .none

you can do

cell.selectionStyle = UITableViewCellSelectionStyleNone;

要使一个单元在每个单元的基础上完全不可选择,需要两件事:

正如其他人所说:

cell.selectionStyle = UITableViewCellSelectionStyleNone;

2-按以下方式实现此委托方法:

// Called before the user changes the selection. Return a new indexPath, or nil, to change the proposed selection.
- (NSIndexPath *)tableView:(UITableView *)tableView willSelectRowAtIndexPath:(NSIndexPath *)indexPath{
UITableViewCell* cell = [tableView cellForRowAtIndexPath:indexPath];
if(cell.selectionStyle == UITableViewCellSelectionStyleNone){
return nil;
}
return indexPath;
}

快速句法:

cell.selectionStyle = UITableViewCellSelectionStyle.None

在故事板中为表格视图设置如下内容:

选择 : 无选择

显示触摸选择 : False

enter image description here

实现 UITableViewDelegate方法

- (BOOL)tableView:(UITableView *)tableView shouldHighlightRowAtIndexPath:(NSIndexPath *)indexPath
{
return NO;
}
myTable.allowsSelection = false

我是从禁用 TableViewCell 的角度来回答这个问题的。 你可以使用故事板。

XCode Version 8.2.1 (8C1002)

在故事板上选择 TableVewCell,然后在右侧面板上可以看到以下内容——实用程序。

Utilities Sidebar

制作 选择: 无

That's all!

Swift 3更新:

cell.selectionStyle = UITableViewCellSelectionStyle.none

对于斯威夫特3:

cell.selectionStyle = .none

你可以使用 Swift 3

 cell.isUserInteractionEnabled = false

Swift 5

  func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {


let cell = tableView.dequeueReusableCell(withIdentifier: "cell") as! UITableViewCell;
cell.selectionStyle = .none
}

Swift 5

you may wanna try this too

tableView.allowsSelection = false

问题是如何使某些细胞可选,而其他细胞不可选。这就是我的解决方案(在尝试了许多其他建议之后) :

func tableView(_ tableView: UITableView, willSelectRowAt indexPath: IndexPath) -> IndexPath? {
if (indexPath.row == 1 || indexPath.row == 2) {
return indexPath
}
return nil
}