UITableView Удаление строк в iOS 11

Когда я пытаюсь удалить строки, сначала это ведет себя довольно хорошо. Однако в том случае, если content size вначале меньше border табличного представления, при удалении строк вся таблица внезапно поднимается на 1 строку вверх ...

Вот мое действие удаления строки,

override func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCellEditingStyle, forRowAt indexPath: IndexPath) {
    if editingStyle == .delete {
        Results.remove(at: indexPath.row)
        tableView.deleteRows(at: [indexPath], with: .automatic)
    }
}

В ViewDidload я уже реализовал код ниже

self.tableView.estimatedRowHeight = 0;
self.tableView.estimatedSectionHeaderHeight = 0;
self.tableView.estimatedSectionFooterHeight = 0;

Анимация только тогда, когда неправильно, только когда высота содержимого сначала становится меньше границы ... После этого анимация также работает правильно ...

и вот GIF показывает, что происходит ... это ошибка в iOS 11?

Всего 1 ответ


ОК, наконец, я получил решение, и это выглядит хорошо. Я добавляю код ниже к действию удаления:

if(tableView.contentSize.height<=tableView.bounds.height+100.0 && tableView.contentSize.height>tableView.bounds.height) {
    tableView.scrollToRow(at: IndexPath(row: 0, section: 0), at: .top, animated: true)
}
// The 100.0f is the cell height.

100.0f - это высота ячейки. Поэтому, когда высота содержимого вначале меньше границы tableView, табличное представление прокручивается до самого верха, и анимация сбоя покрывается анимацией прокрутки.


Есть идеи?

10000