Jak utworzyć NSIndexPath dla TableView

243

Potrzebuję usunąć wiersz 1 tabeli w funkcji, którą zdefiniowałem. Aby użyć deleteRowAtIndexPath, musisz użyć IndexPathze zdefiniowaną sekcją i wierszem. Jak mogę utworzyć ścieżkę indeksu w ten sposób?

Tablica z int {1} jako jedynym członkiem ulegnie awarii; komunikat NSLog stwierdza, że ​​sekcja również musi zostać zdefiniowana.

* Edycja -> Kod dotyczący usuwania komórki:

    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];
Gumowa kaczuszka
źródło

Odpowiedzi:

646

Służy [NSIndexPath indexPathForRow:inSection:]do szybkiego tworzenia ścieżki indeksu.

Edycja: W Swift 3:

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

Szybki 5

IndexPath(row: 0, section: 0)
Ben Gottlieb
źródło
118

indexPathForRow jest metodą klasową!

Kod powinien brzmieć:

NSIndexPath *myIP = [NSIndexPath indexPathForRow:0 inSection:0] ;
verec
źródło
18

Obowiązkowa odpowiedź w Swift: NSIndexPath(forRow:row, inSection: section)

Zauważysz, że NSIndexPath.indexPathForRow(row, inSection: section)nie jest dostępny w trybie szybkim i musisz użyć pierwszej metody do zbudowania indexPath.

JohnVanDijk
źródło
17

W przypadku Swift 3 jest teraz: IndexPath(row: rowIndex, section: sectionIndex)

towarzysz
źródło