uitableviewcell tutorial ejemplo customize create iphone uitableview

iphone - ejemplo - uitableview tutorial swift 4



Al editar, `UITableView` no llama a didSelectRowAtIndexPath ?? (4)

Tengo un UITableViewController donde el usuario debería poder editar los elementos. Para habilitar la edición, uso esto:

self.navigationItem.rightBarButtonItem = self.editButtonItem;

Para todos los que no saben de dónde viene self.editButtonItem, está predefinido por el SDK.

Entonces, ahora cuando presiono cualquier elemento, este método se llama:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath

pero tan pronto como presiono el botón Editar y mientras la edición está activa, este método no parece ser llamado.

¿Alguna idea de lo que me falta?

Este es el resto del código relacionado con la edición:

// Override to support conditional editing of the table view. - (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath { // Return NO if you do not want the specified item to be editable. return YES; } - (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath { return UITableViewCellEditingStyleNone; } - (BOOL)tableView:(UITableView *)tableView shouldIndentWhileEditingRowAtIndexPath:(NSIndexPath *)indexPath { return NO; }

Gracias por la ayuda.

mcb


pero tan pronto como presiono el botón Editar y mientras la edición está activa, este método no parece ser llamado.

¿Alguna idea de lo que me falta?

Sí. Estás esperando tableView:didSelectRowAtIndexPath: para llamar cuando se tableView:didSelectRowAtIndexPath: un botón en tu barra de navegación. Esto nunca sucederá. Ese método solo se llama cuando se selecciona una fila.

Cuando se toca el botón editar, querrás poner tu tabla en modo de edición. En su controlador de vista:

- (void)setEditing:(BOOL)editing animated:(BOOL)animated { [super setEditing:editing animated:animated]; // must be called first according to Apple docs [self.tableView setEditing:editing animated:animated]; }

Luego maneja los eventos de edición agregando un tableView:commitEditingStyle:forRowAtIndexPath:


¿Establece self.editing = YES cuando se self.editing = YES el botón editar?

Cuando está en modo de edición, se llama a este método, en lugar de didSelectRow cuando toca una fila:

tableView:commitEditingStyle:forRowAtIndexPath:.



Solucioné este problema de otra manera. Mi botón Editar estaba en mi propia barra de navegación y esa fue la razón por la que no fue llamado. Después de haber incrustado VC dentro del Controlador de navegación y poner el nuevo botón Editar dentro de su Elemento de navegación, el botón Editar comenzó a llamarse.