Старый, который до сих пор остается без ответа. Я полагаю, вы поняли это давным-давно, но вот моя первая мысль. (Я помню, как пытался сделать что-то подобное сам.)
Когда UITableView
вызывает heightForRowAtIndexPath:
, это происходит потому, что таблица пытается подготовить ячейку, поэтому вы не можете использовать ячейку для возврата высоты. Это может вызвать бесконечную регрессию в вызовах, или это может обнаружить это и просто сдаться или выбросить исключение и оставить вас с сумкой.
Вы должны рассчитать высоту ячейки без использования самой ячейки.
Что касается предположения о высоте ячейки, попробуйте вызвать вставку / удаление для отдельных ячеек, а не один вызов, чтобы сделать все это сразу. UITableView
по-прежнему будет группировать их для анимации после того, как вы позвоните endUpdates
.