Comment créer NSIndexPath pour TableView

243

J'ai besoin de supprimer la ligne 1 d'un tableau dans une fonction que j'ai définie. Pour utiliser, deleteRowAtIndexPathvous devez utiliser unIndexPath avec une section et une ligne définies. Comment puis-je créer un chemin d'index comme celui-ci?

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

* Modifier -> 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];
Canard en caoutchouc
la source

Réponses:

646

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

Edit: Dans Swift 3:

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

Swift 5

IndexPath(row: 0, section: 0)
Ben Gottlieb
la source
118

indexPathForRow est une méthode de classe!

Le code doit se lire:

NSIndexPath *myIP = [NSIndexPath indexPathForRow:0 inSection:0] ;
verec
la source
18

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

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

JohnVanDijk
la source
17

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

camarade
la source