UITableView Удаление строк в iOS 11 - PullRequest
1 голос
/ 26 марта 2020

Когда я пытаюсь удалить строки, сначала это ведет себя довольно хорошо. Однако в случае, когда 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 Ответ

0 голосов
/ 26 марта 2020

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

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, табличное представление прокручивается до самого верха, и анимация сбоя покрывается анимацией прокрутки.

...