2015-03-11 4 views
3

Я пытаюсь перезагрузить определенную строку из представления tableview, но contentOffset tableview сбрасывается до (0, 0) после перезагрузки. Я попытался добавить [tableview beginUpdates] и [tableview endUpdates] вокруг reloadRowsAtIndexPaths, но не изменил поведение.reloadRowsAtIndexPaths обновляет contentOffset Вид таблицы

Вопрос был задан здесь Calling reloadRowsAtIndexPaths removes tableView contentOffset, но это не решило проблему. Я уверен, что анимация не имеет ничего общего с этим поведением. Я не уверен, как сохранить содержимое. Смещение таблицы, сохраняя при этом перезагрузку строки tableview.

[tableView reloadRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationAutomatic];

+0

Вы пробовали эту функцию: scrollToRowAtIndexPath: atScrollPosition: анимированный после перезагрузки строки? –

+0

Да, я пробовал 'scrollToRowAtIndexPath: atScrollPosition: анимированный', но это не сработало. Я попытался установить contentOffset после перезагрузки строки, но tableview перескакивает смещение, которое не является поведением, которое я хочу. Я не хочу, чтобы смещение содержимого таблицы было изменено при перезагрузке строки из этого табличного представления. – Jay

+0

Есть ли у кого-нибудь мнения по этому вопросу? Я все еще пытаюсь понять, как это исправить, и на нем нет большой информации. – Jay

ответ

6

Я предполагаю, что вы реализовали tableView:estimatedHeightForRowAtIndexPath: и он, возвращая 0.

После reloadRowsAtIndexPaths:withRowAnimation:, то Tableview определяет его смещение с использованием расчетных высот, приведенных в tableView:estimatedHeightForRowAtIndexPath:. Поэтому, если значение, которое вы возвращаете, не является точным, его реализация приведет к изменению смещения таблицыView после перезагрузки. У меня была аналогичная проблема, и я исправил ее, удалив мою реализацию tableView:estimatedHeightForRowAtIndexPath:.

2

Обновление estimatedRowHeight и estimatedSectionHeaderHeight с более точными значениями также может помочь устранить эту проблему, если вы не внедрили ни один из методов делегата с оценкой высоты.

Вы можете использовать инспектора вида, чтобы найти высоты ваших ячеек и заголовков.