Как дать действие «Удалить» в editButtonItem? - PullRequest
1 голос
/ 17 марта 2012

У меня в таблице есть

self.navigationItem.rightBarButtonItem = self.editButtonItem;

при нажатии кнопки «минус» отображается кнопка «Удалить». Я хочу знать, как выполнить действие для этой кнопки Удалить. Tableview показывает список элементов из базы данных sqlite. Я использую Xcode 4.2

Ответы [ 5 ]

4 голосов
/ 17 марта 2012

Кнопка удаления уже связана с вашим табличным представлением, и нажатие на нее отправит tableView:commitEditingStyle:forRowAtIndexPath: в источник данных вашего табличного представления. Вы делаете свое удаление здесь.

Этот метод обычно включается в шаблон для подклассов UITableViewController.

1 голос
/ 17 марта 2012

Когда вы нажимаете кнопку delete, он автоматически вызывает delegate метод UITableView:

- (void)tableView:(UITableView *)tableView commitEditingStyle:( UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath.
{
 // Check if it's a delete button or edit button...

    if (editingStyle == UITableViewCellEditingStyleDelete) 
   {

    // Update the array and table view.
    [eventsArray removeObjectAtIndex:indexPath.row];
    [tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:YES];

    // Commit the change.

    NSError *error;

    if (![managedObjectContext save:&error]) 
    {
        // Handle the error.
    }
}   

}
1 голос
/ 17 марта 2012

Реализация tableView:commitEditingStyle:forRowAtIndexPath: в вашем источнике данных табличного представления (предположительно, ваш контроллер табличного представления). См. Документацию по этому методу или любой из нескольких примеров проектов кода Apple (включая то, что вы получаете из шаблона «master-detail app» Xcode) для подробностей и примера использования.

1 голос
/ 17 марта 2012

Если вы посмотрите на Справочник по протоколу UITableViewDataSource , вы найдете там tableView:commitEditingStyle:forRowAtIndexPath:.

Просит источник данных зафиксировать вставку или удаление указанная строка в получателе.

В этом методе вы получите путь индекса для удаляемой ячейки. Вы должны удалить элемент corespondent в четырех источниках данных. И вам также нужно удалить ячейку табличного представления.

 [tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade];
0 голосов
/ 17 октября 2014

Я бы добавил, что вы должны убедиться, что вы перезагружаете данные таблицы, чтобы они могли обновляться на экране. В противном случае это будет выглядеть так, будто ничего не сделало.

-(void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
{
    [self.myMutableArray removeObjectAtIndex:indexPath.row];
    [self.tableView reloadData];
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...