проблема с commitEditingStyle - чтобы удалить ячейку в таблице - PullRequest
3 голосов
/ 28 июля 2011

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

и как это анимировать, когдаудалите ячейку.

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

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

    if (editingStyle == UITableViewCellEditingStyleDelete) {
        // Delete the row from the data source
        [self.reports removeObjectAtIndex:indexPath.row];
        [tbl reloadData];
            [tbl deleteRowsAtIndexPaths:[NSArray arrayWithObjects:indexPath] 
                                  withRowAnimation:UITableViewRowAnimationFade];    



    }   
}

После гораздо больших исследований и разработок я создаю новый код, и это успешноВыполнить

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


if (editingStyle == UITableViewCellEditingStyleDelete) {
    // Delete the row from the data source

    [[[self.reports objectAtIndex:indexPath.section] valueForKey:@"events"] removeObjectAtIndex:indexPath.row];
    [tbl deleteRowsAtIndexPaths:[NSArray arrayWithObject:[NSIndexPath indexPathForRow:indexPath.row inSection:indexPath.section]] withRowAnimation:UITableViewRowAnimationLeft];

[NSTimer scheduledTimerWithTimeInterval: 0.1 target: self selector: @selector(tableReload) userInfo: nil repeats: NO]; 
}

}

-(void)tableReload{
    [tbl reloadData];  }

Ответы [ 2 ]

9 голосов
/ 28 июля 2011

Во-первых, вы не должны Reload table перед удалением строки из таблицы.Во-вторых, в вашем случае у вас есть несколько разделов и несколько строк в этом разделе, я думаю.Итак, ваш

[tbl deleteRowsAtIndexPaths:[NSArray arrayWithObjects:indexPath] 
                                  withRowAnimation:UITableViewRowAnimationFade];  

не будет работать.
Удаление объекта из массива будет работать.Вам не нужно удалять строки из вашей таблицы.Просто перезагрузите таблицу:

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

    if (editingStyle == UITableViewCellEditingStyleDelete) {
        // Delete the row from the data source
        [self.reports removeObjectAtIndex:indexPath.row];
        [tbl reloadData];
}  

Но позаботьтесь о том, чтобы вы указали правильный indexNumber.

2 голосов
/ 28 июля 2011

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

Следующая строка:

[tbl deleteRowsAtIndexPaths:[NSArray arrayWithObjects:indexPath] 
                              withRowAnimation:UITableViewRowAnimationFade];

На самом деле должно быть:

[tbl deleteRowsAtIndexPaths:[NSArray arrayWithObjects:indexPath, nil] 
                              withRowAnimation:UITableViewRowAnimationFade];

Обратите внимание на ноль после IndexPath.arrayWithObjects должен быть списком объектов с нулевым символом в конце

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