2010-09-17 21 views
10

La función de deslizar para eliminar no funciona en mi vista de tabla. Implementé el delegado commitEditingStyle y el botón Editar en la barra de navegación. Por lo tanto, cuando el usuario hace clic en el botón Editar, los botones Eliminar y Agregar aparecen correctamente. Sin embargo, al deslizar, el botón Eliminar no aparece y parece que no reconoce el deslizamiento como una llamada para el método setEditing.Deslizar para Eliminar no funciona

entonces implementadas delegados willBeginEditingRowAtIndexPath y didEndEditingRwoAtIndexPath de la siguiente manera:

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

{ 
NSLog(@"WILL BEGIN EDITING"); 

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

} 


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

{ 

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

} 

Sin embargo, esto no tiene ningún efecto, ya sea. ¿Cuál podría ser el posible problema? He habilitado multi-touch para la vista de tabla en el IB y cada celda tiene un accesorio DetailDisclosureButton.

Respuesta

7

Para obtener una funcionalidad golpe-a-eliminar, usted tiene que poner en práctica

-(void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    if (editingStyle == UITableViewCellEditingStyleDelete) 
     ; // Delete. 
} 

EDIT: No he leído la pregunta lo suficientemente bien.

He notado que para arrastrar y soltar en el simulador tengo que presionar y pausar durante un segundo mientras selecciona la celda, y solo entonces puedo deslizar hacia la derecha con éxito.

+0

Sí, lo he implementado. Lo he mencionado arriba. No tengo acceso a un dispositivo en este momento, así que estoy probando en el simulador. ¿Podría ser un problema con el simulador? – Nathan

+0

Así lo hiciste. Lo siento. Verifique mi respuesta editada por si acaso. El simulador no tiene un comportamiento táctil de 1-1, especialmente velocidad. –

+0

Intenté eso en el simulador. No funciona También instalé la aplicación en un iPod Touch corriendo 3.1.2. Deslizar para eliminar tampoco funciona en eso. Muy desconcertante. Me pregunto si me estoy perdiendo parte de la implementación de algún delegado. – Nathan

0

hicieron que implementar el método tableView:editingStyleForRowAtIndexPath: y tienen que volver UITableViewCellEditingStyleDelete

+0

Sí, lo hice. Pero había algo extra que causó este problema. – Nathan

+0

verifique mi respuesta arriba. – Nathan

+0

me alegro de poder hacerte buscar la pieza correcta de código ... problemas de depuración como este suelen ser difíciles –

4

que estaba haciendo lo siguiente en el tableView: editingStyleForRowAtIndexPath: método delegado: -

if (self.editing == NO || !indexPath) 
{ 
    return UITableViewCellEditingStyleNone; 
} 

Esto se debe retornar estilo de edición ninguna si no se seleccionó indexPath. Por alguna razón cada vez que se realizaba una acción de deslizamiento, esta condición particular si se estaba ejecutando. Al comentar el fragmento de código anterior, el deslizamiento para eliminar la acción funcionó bien.

Gracias por su ayuda.

4

Tendrá que aplicar:

- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath; 


- (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath; 

- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath; 

Con estas tres cosas que usted debe ser bueno para ir. . (Me perdí de la commitEditingStyle y nunca funcionó

+1

He dado estos 3 métodos de delegado, pero no funciona. –

1

La clave para hacer que el trabajo es poner en práctica:

- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath; 

Y recuerda que para ponerlo dentro de "UITableViewDataSource" en lugar de "UITableViewDelegate"

-2

-(void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath método delegado también tienen que poner en práctica para trabajar funcionalidad golpe.

4

Si todos los demás consejos hacen no ayuda a tratar de verificar si tiene el reconocedor de gestos pan en su código. No funcionará si tiene cosas como esta en alguna vista subyacente.

+0

Tenía el mismo problema, pero fue con UITapGesture –

+0

¡Eres un genio! Tuve un problema con un control deslizante difícil de arrastrar durante unos meses y ahora con una TableViewCell, y el problema era un reconocedor de gestos pan en un marco que estaba usando. –

Cuestiones relacionadas