如何取消表格单元格选择

时间:2016-02-26 07:15:01

标签: swift tableview cells didselectrowatindexpath

我的所有表格单元格都是允许的,但是可以在之前取消表格单元格动作触摸(此函数)tableView(tableVIew: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath)获知已选择单元格吗?

3 个答案:

答案 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可以阻止突出显示单元格,但如果启用了单元格,则无法阻止选择。

你可以

  1. 在应用执行期间动态设置要启用的单元格。
  2. 通过在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;