У меня есть проверка источника данных для определения делегата cellHeightForRowAt
Все коды работают хорошо с добавлением ячейки, но без удаления
вот мои коды
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return self.dataSource.count
}
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
if self.dataSource[indexPath.row].isExclusive {
return 280.0
}
else {
return 150.0
}
}
fileprivate func handleCellDeletion(cell: UITableViewCell) {
let cellIndexPath = self.paymentMethodTableView.indexPath(for: cell)
guard let indexPath = cellIndexPath else { return }
self.dataSource.remove(at: indexPath.row)
self.paymentMethodTableView.beginUpdates()
self.paymentMethodTableView.deleteRows(at: [indexPath], with: .fade)
self.paymentMethodTableView.endUpdates()
}
Теперь проблема в том, что всякий раз, когда ячейка удаляется, она снова запускает делегат heightForRowAt, и эта строка кода выбрасывает индекс из исключения диапазона
if self.dataSource[indexPath.row].isExclusive { // <== this will throw exception
Я заметил, что каким-то образом indexPath.строка по-прежнему отражает общую строку до удаления, хотя я уже удалил индекс в своем массиве dataSource перед повторной загрузкойRows
Кто-нибудь может мне помочь, пожалуйста?Что мне здесь не хватает?Спасибо