UITableView的allowMultipleSelectionDuringEditing - 不显示某些单元格的编辑圈

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了UITableView的allowMultipleSelectionDuringEditing - 不显示某些单元格的编辑圈相关的知识,希望对你有一定的参考价值。

我试图通过将UITableView设置为allowsMultipleSelectionDuringEditing来删除我的YES中的一些行。这一切都运作良好;圆圈显示在左侧。

但是,对于某些细胞,我不希望左侧的圆圈出现。我怎么做?我在编辑过程中尝试过cell.selectionStyle = UITableViewCellSelectionStyleNone但是没有用。

任何提示?

答案

为了禁止多个选择中的某些行,您应该使用与tableView:shouldIndentWhileEditingRowAtIndexPath:混合的cell.selectionStyle = UITableViewCellSelectionStyleNone

以下是我的代码示例:

- (BOOL)tableView:(UITableView *)tableView shouldIndentWhileEditingRowAtIndexPath:(NSIndexPath *)indexPath*)indexPath {
    if (indexPath.row < 4) {
        return YES;
    } else {
        return NO;
    }
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    // (...) configure cell

    if (indexPath.row < 4) {
        cell.selectionStyle = UITableViewCellSelectionStyleBlue;
    } else {
        cell.selectionStyle = UITableViewCellSelectionStyleNone;
    }
}
另一答案

首先,使用以下设置:

self.tableView.allowsMultipleSelectionDuringEditing = true
self.tableView.setEditing(true, animated: false)

并实现下一个委托方法:

func tableView(_ tableView: UITableView, canEditRowAt indexPath: IndexPath) -> Bool {
    return self.shouldAllowSelectionAt(indexPath)
}

func tableView(_ tableView: UITableView, shouldIndentWhileEditingRowAt indexPath: IndexPath) -> Bool {
    return self.shouldAllowSelectionAt(indexPath)
}

func tableView(_ tableView: UITableView, willSelectRowAt indexPath: IndexPath) -> IndexPath? {
    if self.shouldAllowSelectionAt(indexPath) {
        return indexPath
    }
    return nil
}

shouldAllowSelectionAt是我的私有方法,它包含有关要选择哪一行的逻辑

另一答案

您是否尝试过实施tableView:editingStyleForRowAtIndexPath: UITableViewDelegate的方法并为不想显示删除控件的单元格返回UITableViewCellEditingStyleNone

以上是关于UITableView的allowMultipleSelectionDuringEditing - 不显示某些单元格的编辑圈的主要内容,如果未能解决你的问题,请参考以下文章

扩展AuthorizeAttribute

特性Attibute定义和使用

特 性Attribute

自定义授权筛选器

过滤器详解

EJB 配置多个数据源