web-dev-qa-db-fra.com

Comment créer NSIndexPath pour TableView

J'ai besoin de supprimer la ligne 1 d'une table dans une fonction que j'ai définie. Pour utiliser deleteRowAtIndexPath, vous devez utiliser un IndexPath avec une section et une ligne définies. Comment puis-je créer un indexpath comme celui-ci?

Un tableau avec int {1} comme seul membre plantera; le message NSLog indique que la section doit également être définie.

* Édition -> Code relatif à la suppression de cellule:

    NSIndexPath *myIP = [[NSIndexPath alloc] indexPathForRow:0 inSection:0];
    NSArray *myArray = [[NSArray alloc] initWithObjects:myIP, nil];
//  [self.tableView beginUpdates];
    [self.tableView deleteRowsAtIndexPaths:myArray withRowAnimation:UITableViewRowAnimationFade];
//  [self.tableView endUpdates];
240
Rubber Duck

Utilisez [NSIndexPath indexPathForRow:inSection:] pour créer rapidement un chemin d’index.

Edit: Dans Swift 3:

let indexPath = IndexPath(row: rowIndex, section: sectionIndex)
640
Ben Gottlieb

indexPathForRow est une méthode de classe!

Le code devrait se lire comme suit:

NSIndexPath *myIP = [NSIndexPath indexPathForRow:0 inSection:0] ;
117
verec

Réponse obligatoire dans Swift: NSIndexPath(forRow:row, inSection: section)

Vous remarquerez que NSIndexPath.indexPathForRow(row, inSection: section) n'est pas disponible dans Swift et vous devez utiliser la première méthode pour construire le chemin indexPath.

18
JohnVanDijk

Pour Swift 3 c'est maintenant: IndexPath(row: rowIndex, section: sectionIndex)

17
comrade