2010-09-17 7 views
10

La fonctionnalité de balayage à supprimer ne fonctionne pas dans ma vue de table. J'ai implémenté le délégué commitEditingStyle et le bouton Modifier dans la barre de navigation. Par conséquent, lorsque l'utilisateur clique sur le bouton Modifier, les boutons Supprimer et Ajouter apparaissent de manière appropriée. Toutefois, lors du balayage, le bouton Supprimer n'apparaît pas et il semble qu'il ne reconnaisse pas le balayage comme un appel pour la méthode setEditing.Glisser pour supprimer ne fonctionne pas

Je me suis alors mis en œuvre les délégués willBeginEditingRowAtIndexPath et didEndEditingRwoAtIndexPath comme suit:

-(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]; 

} 

Cependant, cela n'a pas d'effet non plus. Quel pourrait être le problème possible? J'ai activé le multi-touch pour la vue de table dans le IB et chaque cellule a un accessoire DetailDisclosureButton.

Répondre

7

Pour swipe à supprimer la fonctionnalité, vous devez mettre en œuvre

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

EDIT: Je ne l'ai pas lu la question assez bien.

J'ai remarqué que pour faire un glissement glisser dans le simulateur, je dois appuyer et mettre en pause pendant une seconde pendant la sélection de la cellule, et seulement alors je peux glisser vers la droite avec succès.

+0

Oui j'ai implémenté cela. Je l'ai mentionné ci-dessus. Je n'ai pas accès à un appareil pour le moment et je suis donc en train de tester sur le simulateur. Cela pourrait-il être un problème avec le simulateur? – Nathan

+0

Donc vous avez fait. Pardon. Vérifiez ma réponse éditée juste au cas où. Le simulateur n'est pas un comportement 1-1 au toucher, en particulier la vitesse. –

+0

J'ai essayé cela sur le simulateur. Ne fonctionne pas. Également installé l'application sur un iPod Touch en cours d'exécution 3.1.2. Glisser pour supprimer ne fonctionne pas dans cela aussi. Très curieux. Je me demande si je manque une implémentation de délégué? – Nathan

0

avez-vous mettre en œuvre la méthode tableView:editingStyleForRowAtIndexPath: et avoir le retour UITableViewCellEditingStyleDelete

+0

Oui, je l'ai fait. Mais il y avait quelque chose en plus qui a causé ce problème. – Nathan

+0

vérifier ma réponse ci-dessus. – Nathan

+0

heureux que je pouvais vous obtenir en regardant le bon morceau de code .. problèmes de débogage comme celui-ci sont généralement difficiles –

4

que je faisais ce qui suit dans la tableView: editingStyleForRowAtIndexPath: méthode déléguée: -

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

C'était censé retourner aucun style d'édition si aucun indexPath n'a été sélectionné. Pour une raison quelconque, chaque fois qu'une action de balayage a été effectuée, cette condition si particulière était exécutée. En commentant l'extrait de code ci-dessus, l'action de balayage pour supprimer a bien fonctionné.

Merci à tous pour votre aide.

4

Vous aurez besoin de mettre en œuvre:

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


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

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

Avec ces trois choses que vous devriez être bon d'aller. . (J'ai manqué de l'commitEditingStyle et il n'a jamais travaillé

+1

J'ai donné ces 3 méthodes de délégués, mais ne fonctionne pas. –

1

La clé pour rendre le travail consiste à mettre en œuvre:

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

Et rappelez-vous de le mettre à l'intérieur « UITableViewDataSource » au lieu de « UITableViewDelegate »

-2

-(void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath méthode déléguée a également besoin de mettre en œuvre à la fonctionnalité swipe.

4

Si tous les autres conseils font N'aidez pas à vérifier si vous avez un système de reconnaissance de mouvements dans votre code. Cela ne fonctionnera pas si vous avez des choses comme ça dans une vue sous-jacente.

+0

A eu le même problème, mais c'était avec UITapGesture –

+0

Vous êtes un génie! J'ai eu un problème avec un curseur dur pour faire glisser pendant quelques mois et maintenant avec un tableviewCell, et le problème était un système de reconnaissance de mouvement pan dans un cadre que j'utilisais. –

Questions connexes