Можно ли отключить жест 'swipe-to-delete' для строки/ячейки в tableView? Если так, то как ты это делаешь? Ячейка все еще должна быть доступна для редактирования в режиме EDIT, но жест жестки для удаления должен быть отключен.
Отключить жестов для перехода по экрану в UITableView
Ответ 1
Здесь что делать:
- (UITableViewCellEditingStyle)tableView:(UITableView *)aTableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath {
// Detemine if it in editing mode
if (self.tableView.editing) {
return UITableViewCellEditingStyleDelete;
}
return UITableViewCellEditingStyleNone;
}
Для анимации удаления вам еще нужно tableView:commitEditingStyle:forRowAtIndexPath:
.
Это гораздо более чистое решение, чем решение iBrad Apps, поскольку вместо пользовательской кнопки вы можете использовать self.editButtonItem
по умолчанию.
Ссылка: UITableView отключить прокрутку для удаления, но все же удалить в режиме редактирования?
Ответ 2
Да. Код ниже отключит его.
- (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];
}
Ответ 3
Вот версия Swift:
override func tableView(tableView: UITableView, editingStyleForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCellEditingStyle {
if tableView.editing {
return UITableViewCellEditingStyle.Delete
}
return UITableViewCellEditingStyle.None
}
Ответ 4
Если вы не хотите, чтобы определенные ячейки были удалены и удалены, вот решение:
- (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
}
}