cambie la tabla a modo de edición y elimine filas dentro de un ViewController normal

Acabo de insert una tabla en un UIViewController normal y conecté el delegado y los componentes de origen con el propietario del file. Todo funciona bien cuando inserto datos en las filas de la tabla. pero ahora estoy tratando de averiguar cómo se pueden eliminar las filas.

Acabo de ver muchas otras publicaciones, pero no pude encontrar la solución adecuada.

Intenté insert un button de evaluación para cada fila de la tabla:

cell.accessoryType = UITableViewCellAccessoryDetailDisclosureButton; 

Incluso encontré el método que se llamará cuando se presiona el button de accesorios:

 - (void)tableView:(UITableView *)tableView accessoryButtonTappedForRowWithIndexPath:(NSIndexPath *)indexPath{ NSLog(@"Accessory pressed"); //[self tableView:tableView willBeginEditingRowAtIndexPath:indexPath]; //[self tableView:nil canEditRowAtIndexPath:indexPath]; //[self setEditing:YES animated:YES]; } 

Dentro del logging, se imprime el post, pero ninguno de los methods que intenté llamar (el comentado) cambió la vista al modo de edición. ¿Como puedó resolver esté problema?


Aquí hay una captura de pantalla del UIViewController. No he integrado un control de navigation.

introduzca la descripción de la imagen aquí

Para habilitar el modo de edición para la vista de tabla, puede llamar al método de edición en UITableView como,

 [self.tableView setEditing:YES animated:YES]; 

Tienes que implementar tableView:commitEditingStyle:forRowAtIndexPath: método para habilitar la eliminación de filas. Para eliminar las filas, debe usar deleteRowsAtIndexPaths:withRowAnimation: method.

Por ejemplo:

 self.navigationItem.rightBarButtonItem = self.editButtonItem;//set in viewDidLoad - (void)setEditing:(BOOL)editing animated:(BOOL)animated { //Implement this method [super setEditing:editing animated:animated]; [self.tableView setEditing:editing animated:animated]; } - (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath { //implement the delegate method if (editingStyle == UITableViewCellEditingStyleDelete) { // Update data source array here, something like [array removeObjectAtIndex:indexPath.row]; [tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade]; } } 

Para más detalles, consulte la documentation de Apple aquí .

Podría solucionar el problema para eliminar las filas. Para que funcione inserté como me dijo ACB, los siguientes methods:

 //when blue accessory button has been pressed - (void)tableView:(UITableView *)tableView accessoryButtonTappedForRowWithIndexPath:(NSIndexPath *)indexPath{ //turn into edit mode [tableView setEditing:YES animated:YES]; } - (void)setEditing:(BOOL)editing animated:(BOOL)animated{ [super setEditing:editing animated:animated]; } // method to enable the deleting of rows -(void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath{ if (editingStyle == UITableViewCellEditingStyleDelete) { Activity *activity = [allActivities objectAtIndex:indexPath.row]; // remove the item from the array [allActivities removeObjectAtIndex:indexPath.row]; //delete element from database with created method [dataController deleteFromTable:@"activity" theElementWithID:activity._id]; [tableView setEditing:NO animated:YES]; // refresh the table view [tableView reloadData]; } } 

Encontré esta solución en cocoapi.wordpress.com/tag/caneditrowatindexpath

Pero sigo teniendo un solo problema. Si alguien ingresa al modo de edición y no elimina una fila, no hay posibilidad, para desactivar nuevamente el modo de edición. Si cambia la vista y regresa de nuevo, se detiene automáticamente, pero de lo contrario no es posible porque no tengo un NavigationController insertado.

¿Hay alguna manera de acceder al estado del control de eliminación a la izquierda de la fila mientras se edita? sería útil detectar si alguien desactivó la eliminación nuevamente para saltar del modo de edición.

Puede que no se ajuste a la guía de usuario de Apple, pero estoy en mi primer proyecto y debería funcionar.