Столкнулся с очень странным поведением UITableViewDelegate
Пример 1:
-> Insert 5 items
[0..<5], numberOfRowsInSection = 5
-> Insert 5 items
[0..<10], numberOfRowsInSection = 10
-> Insert 5 items
[0..<15], numberOfRowsInSection = 15
-> Delete 14 items
[0..<1], numberOfRowsInSection = 1
После этого UIKit запрашивает
heightForRowAt [0, 0] cellFoRowAt [0, 0]; heightForRowAt [0, 14] cellFoRowAt [0, 14]
и, соответственно, падает, так как в моделях лежит только 1 айтем
Что интересно, пример 2:
-> Insert 5 items
[0..<5], numberOfRowsInSection = 5
-> Insert 5 items
[0..<10], numberOfRowsInSection = 10
-> Delete 9 items
[0..<1], numberOfRowsInSection = 1
Здесь вызовы UITableViewDelegate отрабатывают корректно - запрашивает heightForRow [0, 0] и все
пробовал обернуть deleteRows(at: with:) в .beginUpdates() .endUpdated() или performButchUpdates - безуспешно
Воспроизводится на симуляторе iOS 13, девайсе iOS12