uitableviewcell source number example data objective-c ios cocoa-touch uitableview

objective c - source - Deshabilitar el gesto de deslizar para eliminar en UITableView



uitableviewcell swift 3 (4)

¿Es posible deshabilitar el gesto ''deslizar para eliminar'' para una fila / celda en un tableView? Si es así, como lo haces? La celda aún debe ser editable en el modo EDITAR, pero el gesto de deslizar para eliminar debe estar deshabilitado.


Esto es lo que hay que hacer:

- (UITableViewCellEditingStyle)tableView:(UITableView *)aTableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath { // Detemine if it''s in editing mode if (self.tableView.editing) { return UITableViewCellEditingStyleDelete; } return UITableViewCellEditingStyleNone; }

Aún necesita tableView:commitEditingStyle:forRowAtIndexPath: para animar la eliminación.

Esta es una solución mucho más limpia que la solución de iBrad Apps, ya que puede usar el valor predeterminado self.editButtonItem lugar de un botón personalizado.

Enlace: UITableView ¿Desea desactivar el deslizamiento para eliminar, pero todavía tiene eliminar en el modo de edición?


Heres una versión rápida:

override func tableView(tableView: UITableView, editingStyleForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCellEditingStyle { if tableView.editing { return UITableViewCellEditingStyle.Delete } return UITableViewCellEditingStyle.None }


Sí. El siguiente código lo deshabilitará.

- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath { return NO; }

Respuesta a tu comentario:

Edit2 : Mi código a continuación funcionará mejor con un botón personalizado. Si desea el botón predeterminado, vaya al enlace que @dasblinkenlight publicó.

Así que más o menos haz un botón donde quieras que se muestren los botones de edición y luego llama a este método.

- (void)setEditing:(BOOL)editing animated:(BOOL)animated { [super setEditing:editing animated:animated]; [self.tableview setEditing:editing animated:animated]; }


Si no quieres permitir que ciertas celdas sean barridas y eliminadas, aquí hay una solución:

- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath { if (indexPath.row == yourCellIndex) { return NO; } return YES; }

Tampoco olvides tener esto implementado para que funcione:

- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath { if (editingStyle == UITableViewCellEditingStyleDelete) { // do something when deleted } }