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

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)

118

indexPathForRow ist eine Klassenmethode!

Der Code sollte lauten:

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

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.


17

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

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.