Как создать NSIndexPath для TableView - PullRequest
240 голосов
/ 28 января 2010

Мне нужно удалить строку 1 таблицы в функции, которую я определил. Чтобы использовать deleteRowAtIndexPath, вы должны использовать IndexPath с определенным разделом и строкой. Как я могу создать indexpath, как это?

Сбой массива с int {1} в качестве единственного члена; сообщение NSLog утверждает, что раздел должен быть также определен.

* Правка -> Код, относящийся к удалению ячейки:

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

Ответы [ 4 ]

636 голосов
/ 28 января 2010

Используйте [NSIndexPath indexPathForRow:inSection:] для быстрого создания пути индекса.

Редактировать: В Swift 3:

let indexPath = IndexPath(row: rowIndex, section: sectionIndex)
117 голосов
/ 07 февраля 2011

indexPathForRow это метод класса!

Код должен читать:

NSIndexPath *myIP = [NSIndexPath indexPathForRow:0 inSection:0] ;
18 голосов
/ 08 ноября 2015

Обязательный ответ в Swift: NSIndexPath(forRow:row, inSection: section)

Вы заметите, что NSIndexPath.indexPathForRow(row, inSection: section) недоступен в Swift, и вы должны использовать первый метод для создания indexPath.

17 голосов
/ 29 сентября 2016

Для Swift 3 теперь это: IndexPath(row: rowIndex, section: sectionIndex)

...