是否可以为tableView中的行/单元禁用“滑动到删除”手势?如果是这样,你怎么做?在编辑模式下,单元格仍应可编辑,但应禁用滑动到删除手势。
答案 0 :(得分:43)
以下是该做什么:
- (UITableViewCellEditingStyle)tableView:(UITableView *)aTableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath {
// Detemine if it's in editing mode
if (self.tableView.editing) {
return UITableViewCellEditingStyleDelete;
}
return UITableViewCellEditingStyleNone;
}
您仍然需要tableView:commitEditingStyle:forRowAtIndexPath:
来为删除设置动画。
这是比iBrad Apps解决方案更清晰的解决方案,因为您可以使用默认的self.editButtonItem
而不是自定义按钮。
链接:UITableView disable swipe to delete, but still have delete in Edit mode?
答案 1 :(得分:14)
是。下面的代码将禁用它。
- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath {
return NO;
}
回复您的评论:
Edit2 :我的代码可以更好地使用自定义按钮。如果您想要默认按钮,请转到@dasblinkenlight发布的链接。
所以几乎要创建一个按钮,你想要显示编辑按钮,然后调用这个方法。
- (void)setEditing:(BOOL)editing animated:(BOOL)animated {
[super setEditing:editing animated:animated];
[self.tableview setEditing:editing animated:animated];
}
答案 2 :(得分:1)
Heres一个Swift版本:
override func tableView(tableView: UITableView, editingStyleForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCellEditingStyle {
if tableView.editing {
return UITableViewCellEditingStyle.Delete
}
return UITableViewCellEditingStyle.None
}
答案 3 :(得分:0)
如果您不想允许刷卡和删除某些单元格,请点击此处:
- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath {
if (indexPath.row == yourCellIndex) {
return NO;
}
return YES;
}
也不要忘记实施此功能,以便它能够正常工作:
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath {
if (editingStyle == UITableViewCellEditingStyleDelete) {
// do something when deleted
}
}