So erstellen Sie NSIndexPath für TableView

243

Ich muss Zeile 1 einer Tabelle in einer von mir definierten Funktion löschen. Um verwenden zu können deleteRowAtIndexPath, müssen Sie ein IndexPathmit einem Abschnitt und einer Zeile definiert verwenden. Wie kann ich einen solchen Indexpfad erstellen?

Ein Array mit dem int {1} als einzigem Mitglied stürzt ab. In der NSLog-Nachricht wird angegeben, dass der Abschnitt ebenfalls definiert werden muss.

* Bearbeiten -> Code zum Löschen von Zellen:

    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];
Badeente
quelle

Antworten:

646

Verwenden Sie [NSIndexPath indexPathForRow:inSection:]diese Option, um schnell einen Indexpfad zu erstellen.

Bearbeiten: In Swift 3:

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

Swift 5

IndexPath(row: 0, section: 0)
Ben Gottlieb
quelle
118

indexPathForRow ist eine Klassenmethode!

Der Code sollte lauten:

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

Obligatorische Antwort in Swift: NSIndexPath(forRow:row, inSection: section)

Sie werden feststellen, dass dies NSIndexPath.indexPathForRow(row, inSection: section)nicht in Swift verfügbar ist, und Sie müssen die erste Methode verwenden, um den Indexpfad zu erstellen.

JohnVanDijk
quelle
17

Für Swift 3 ist es jetzt: IndexPath(row: rowIndex, section: sectionIndex)

Genosse
quelle