62
задан 31 August 2016 в 14:39

3 ответа

Необходимо удалить объект из массива данных прежде , Вы звоните deleteRowsAtIndexPaths:withRowAnimation:. Так, Ваш код должен быть похожим на это:

// Editing of rows is enabled
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath {
    if (editingStyle == UITableViewCellEditingStyleDelete) {

        //when delete is tapped
        [currentCart removeObjectAtIndex:indexPath.row];

        [tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade];
    }
}

можно также упростить код немного при помощи ярлыка создания массива @[]:

[tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationFade];
147
ответ дан 31 October 2019 в 13:28

Быстрая Версия-> Удаляет объект из Вашего массива данных перед вызовом

func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCellEditingStyle, forRowAt indexPath: IndexPath) {
    if editingStyle == .delete {
        print("Deleted")

        currentCart.remove(at: indexPath.row) //Remove element from your array 
        self.tableView.deleteRows(at: [indexPath], with: .automatic)
    }
}
6
ответ дан 31 October 2019 в 13:28

В моем случае проблема была то, что numberOfRowsInSection возвращал подобное количество строк после вызова tableView.deleteRows(...).

, Так как это было необходимым поведением в моем случае, я закончил тем, что звонил tableView.reloadData() вместо tableView.deleteRows(...) в случаях, где numberOfRowsInSection останется тем же после удаления строки.

0
ответ дан 31 October 2019 в 13:28

Другие вопросы по тегам:

Похожие вопросы: