我的所有表格单元格都是允许的,但是可以在之前取消表格单元格动作触摸(此函数)tableView(tableVIew: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath)
获知已选择单元格吗?
答案 0 :(得分:4)
如果您想取消选择,可以实施func tableView(tableView: UITableView, willSelectRowAtIndexPath indexPath: NSIndexPath) -> NSIndexPath?
以对选择事件作出反应。
以下代码将取消对部分第一行的选择:
func tableView(tableView: UITableView, willSelectRowAtIndexPath indexPath: NSIndexPath) -> NSIndexPath? {
if (indexPath.row == 0) {
return nil
}
return indexPath
}
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
print("SELECTED!!!")
}
如果您想避免突出显示单元格,也可以查看func tableView(tableView: UITableView, shouldHighlightRowAtIndexPath indexPath: NSIndexPath) -> Bool
并实现此方法。
答案 1 :(得分:1)
方法-(BOOL)tableView:(UITableView *)tableView shouldHighlightRowAtIndexPath:(NSIndexPath *)indexPath
可以阻止突出显示单元格,但如果启用了单元格,则无法阻止选择。
你可以
false
中返回shouldHighlightRowAtIndexPath
,然后在执行任何执行之前立即在didSelectRowAtIndexPath
中断,阻止突出显示您不想选择的单元格。答案 2 :(得分:0)
不,你不能停止委托被叫 - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath;
您可以使用以下委托来禁用选择
(void)selectRowAtIndexPath :( nullable NSIndexPath *)indexPath animated:(BOOL)animated scrollPosition:(UITableViewScrollPosition)scrollPosition;
(void)deselectRowAtIndexPath:(NSIndexPath *)indexPath animated:(BOOL)animated;
(void)tableView:(UITableView *)tableView didDeselectRowAtIndexPath:(NSIndexPath *)indexPath
或者您可以进行验证以控制行为 if(indexPath.section == 0)返回nil;