Размах удалить не работает - PullRequest
       1

Размах удалить не работает

10 голосов
/ 17 сентября 2010

В моем табличном представлении не работает функция смахивания для удаления. Я реализовал делегат commitEditingStyle и кнопку «Редактировать» на панели навигации. Следовательно, когда пользователь нажимает кнопку редактирования, кнопки удаления и добавления отображаются соответствующим образом. Однако при смахивании кнопка удаления не появляется, и кажется, что она не распознает смахивание как вызов метода setEditing.

Затем я реализовал делегаты willBeginEditingRowAtIndexPath и didEndEditingRwoAtIndexPath следующим образом:

-(void)tableView:(UITableView*)tableView willBeginEditingRowAtIndexPath:(NSIndexPath *)indexPath

{
 NSLog(@"WILL BEGIN EDITING");

 [self.tableView setEditing:YES animated:YES];

}


-(void)tableView:(UITableView*)tableView didEndEditingRowAtIndexPath:(NSIndexPath *)indexPath

{

[self.tableView setEditing:NO animated:YES];

}

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

Ответы [ 7 ]

7 голосов
/ 17 сентября 2010

Для использования функции «пролистывание-удаление» необходимо реализовать

 -(void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
{
    if (editingStyle == UITableViewCellEditingStyleDelete)
        ; // Delete.
}

РЕДАКТИРОВАТЬ: Я не прочитал вопрос достаточно хорошо.

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

5 голосов
/ 24 июля 2012

Вам нужно будет реализовать:

- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath;


- (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath;

- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath;

С этими тремя вещами вам будет хорошо идти.(Я пропустил commitEditingStyle, и он никогда не работал.

4 голосов
/ 30 мая 2013

Если все другие советы не помогли, попробуйте проверить, есть ли в вашем коде распознаватель пан-жестов.Это не будет работать, если у вас есть такие вещи в каком-либо нижележащем виде.

4 голосов
/ 17 сентября 2010

Я делал следующее в tableView: editStyleForRowAtIndexPath: метод делегата: -

if (self.editing == NO || !indexPath)
{   
    return UITableViewCellEditingStyleNone;
}

Это должно было вернуть стиль редактирования none, если не был выбран indexPath.По какой-то причине всякий раз, когда выполнялось действие смахивания, особенно если выполнялось условие.При комментировании приведенного выше фрагмента кода, действие по удалению сработало отлично.

Спасибо всем за помощь.

1 голос
/ 20 ноября 2012

Ключ, чтобы заставить это работать, состоит в том, чтобы реализовать:

- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath;

И не забудьте поместить это внутри " UITableViewDataSource " вместо " UITableViewDelegate "

0 голосов
/ 04 февраля 2013

-(void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath метод делегата также необходимо реализовать для работы функции прокрутки.

0 голосов
/ 17 сентября 2010

вы реализовали метод tableView:editingStyleForRowAtIndexPath: и получили его UITableViewCellEditingStyleDelete

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...