我试图UITableView
通过设置allowsMultipleSelectionDuringEditing
为删除我的一些行YES
。这一切都运作良好;圆圈显示在左侧。
但是,对于某些单元格,我不希望左侧的圆圈出现。我怎么做?我cell.selectionStyle = UITableViewCellSelectionStyleNone
在编辑过程中尝试过,但没有奏效。
有什么提示吗?
我试图UITableView
通过设置allowsMultipleSelectionDuringEditing
为删除我的一些行YES
。这一切都运作良好;圆圈显示在左侧。
但是,对于某些单元格,我不希望左侧的圆圈出现。我怎么做?我cell.selectionStyle = UITableViewCellSelectionStyleNone
在编辑过程中尝试过,但没有奏效。
有什么提示吗?
为了禁止多选中的某些行,您应该使用tableView:shouldIndentWhileEditingRowAtIndexPath:
mix with 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
您不想显示删除控件的单元格?