2009-07-22 7 views
5

J'ai un UITableView et je veux fournir la fonctionnalité à l'utilisateur pour supprimer la ligne quand il glisse ou passe son doigt sur la ligne. Je connais le style d'édition qui fournit un bouton rouge circulaire avec le signe -ve dessus. Mais Comment mettre en œuvre le style flick. J'ai vu beaucoup d'applications l'utiliser, donc Apple fournit un délégué intégré pour cela ou nous devons écrire notre propre contrôleur pour cela.Comment faire pour supprimer une ligne d'une table dans l'iPhone

+0

pouvez-vous me dire la méthode que vous connaissez déjà? coz je veux mettre en œuvre cela. – rptwsthi

Répondre

32

Afin d'obtenir l'effet swipe dont vous avez besoin pour mettre en œuvre la vue du tableau délégué méthode

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

, cela fournira un accès à l'interaction swipe pour la suppression. Je fournis généralement une interaction d'édition aussi bien pour les vues de table où la suppression est possible puisque l'interaction de balayage a tendance à être un peu cachée aux utilisateurs.

À titre d'exemple:

- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath { 
    [tableView beginUpdates];  
    if (editingStyle == UITableViewCellEditingStyleDelete) { 
    // Do whatever data deletion you need to do... 
    // Delete the row from the data source 
    [tableView deleteRowsAtIndexPaths:[NSArray arrayWithObjects:indexPath, nil] withRowAnimation:UITableViewRowAnimationTop]; 
    }  
    [tableView endUpdates]; 
} 

espoir qui aide.

+0

ne sais pas comment vous remercier mate .... – WaaleedKhan

+1

withRowAnimation: OUI est faux, vous devriez utiliser une énumération par exemple. withRowAnimation: UITableViewRowAnimationTop – ozba

+0

Envisagez de remplacer '... UITableViewRowAnimationTop];' par '... UITableViewRowAnimationAutomatic];'. Cela a été fait dans une édition invalide (aurait dû être un commentaire), donc je l'ai inversé. Si cela est correct, envisagez de mettre à jour votre solution en conséquence. –

2

Je suis presque certain qu'il existe un exemple d'application qui fait cela. Une réponse plus concrète viendra bientôt.

MISE À JOUR: iPhoneCoreDataRecipes donne probablement exactement ce que vous cherchez.

Sur le sujet, voici l'une des méthodes fournies doux:

// If I want to delete the next 3 cells after the one you click 
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    NSMutableArray* indexPaths = [NSMutableArray array]; 
    for (int i = indexPath.row + 3; i < indexPath.row + 3; i++) 
    { 
    [indexPaths addObject:[NSIndexPath indexPathForRow:i inSection:0]]; 
    } 

    [tableView beginUpdates]; 
    [tableView deleteRowsAtIndexPaths:indexPaths withRowAnimation:UITableViewRowAnimationFade]; 
    [tableView endUpdates]; 
    [tableView deselectRowAtIndexPath:indexPath animated:YES]; 
} 

Je pense qu'il ya un moyen plus facile d'accomplir ce que vous voulez, mais encore une fois cela est assez facile. La seule difficulté pourrait être de vous supprimer ... faites attention aux erreurs de segmentation.

Questions connexes