UITableView: могу ли я удалить несколько строк?
Я хочу удалить несколько строк из представления таблицы, основываясь на выборе пользователя. Очевидно, я не могу использовать метод didSelectRowAtIndexPath
, потому что он будет вызываться для каждой выбранной строки. Я хочу разрешить пользователю выбирать несколько строк для удаления, а затем удалять их за один раз. Является ли это возможным?
Если да, то как это сделать? Кроме того, я использую проект с одним представлением и хочу, чтобы заголовок таблицы был изменен на "Удалить" на том же самом представлении, когда пользователь хочет удалить строки из представления.
Ответы
Ответ 1
Вы можете сделать что-то таким образом:
- (void)tableView:(UITableView *)theTableView
didSelectRowAtIndexPath:(NSIndexPath *)newIndexPath {
[theTableView deselectRowAtIndexPath:[theTableView indexPathForSelectedRow] animated:NO];
UITableViewCell *cell = [theTableView cellForRowAtIndexPath:newIndexPath];
if (cell.accessoryType == UITableViewCellAccessoryNone) {
cell.accessoryType = UITableViewCellAccessoryCheckmark;
[selectedCellsMutableArray addObject:newIndexPath];
} else if (cell.accessoryType == UITableViewCellAccessoryCheckmark) {
cell.accessoryType = UITableViewCellAccessoryNone;
[selectedCellsMutableArray removeObjectIdenticalTo:newIndexPath];
}
}
Когда пользователь нажимает кнопку Удалить выбранные - просто вызовите что-то вроде
// change your model here and then:
[yourView deleteRowsAtIndexPaths:selectedCellsMutableArray
withRowAnimation:UITableViewRowAnimationRight];
Ответ 2
Поздний ответ, но еще один способ справиться с этим (если вы настроите iOS 5) - переключить режим редактирования и использовать встроенный выбор нескольких ячеек. Самый простой способ сделать это - поместить это в viewDidLoad...
// add edit button to navigation bar, which auto toggles editing mode
self.navigationItem.rightBarButtonItem = self.editButtonItem;
// allows user to select multiple cells while in editing mode
self.tableView.allowsMultipleSelectionDuringEditing = YES;
Подробнее см. документацию