проблема со смахиванием UITableViewCell - PullRequest
1 голос
/ 13 мая 2011

Я хотел бы сделать кое-что, когда пользователь проведет пальцем вправо от UITableViewCell, поэтому я использую

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

Однако я попытался скользить вправо, и это не вызывалось, почемуэто?Вызываются все мои делегаты UITableView.

У меня также есть это в моем коде:

 - (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath
 {
     return YES;
 }


 // Override to support editing the table view.
 - (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
{

}

Все, что я хочу сделать, это добавить подпредставление, когда происходит свип

Ответы [ 4 ]

1 голос
/ 13 мая 2011

У вас есть tableView: commitEditingStyle: forRowAtIndexPath: метод?

Цитировать Apple:

Note: A swipe motion across a cell does not cause the display of a Delete button 
unless the table view's data source implements the 
tableView:commitEditingStyle:forRowAtIndexPath: method.

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

1 голос
/ 13 мая 2011
// You missed this?
- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath {
  return YES;
}


- (UITableViewCellEditingStyle)tableView:(UITableView *)theTableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath {
  return UITableViewCellEditingStyleDelete;
}


- (NSString *)tableView:(UITableView *)tableView titleForDeleteConfirmationButtonForRowAtIndexPath:(NSIndexPath *)indexPath {
  return @"Remove";
}


- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath {
  if (editingStyle == UITableViewCellEditingStyleDelete) {
    [tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:YES];
  }
}

Надеюсь, это поможет.

0 голосов
/ 13 мая 2011

Попробуйте добавить этот метод в методы делегата tableView:

    - (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath {
         if (editingStyle == UITableViewCellEditingStyleDelete) {
             // Delete the row from the data source.
             [self.listTableView beginUpdates];
...

Я предполагаю, что из-за вызова других ваших методов делегатов, которые вы включили в строку .h file @interface? Если вы используете IB, вы щелкнули правой кнопкой мыши по представлению таблицы и подключили делегат и источник данных?

0 голосов
/ 13 мая 2011

Установить свойство просмотра таблицы

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