Недопустимый размер прокрутки UITableView после отклонения другого вида

Итак, у меня есть UITableViewController, который запускает еще один tableVC, который меняет количество ячеек для оригинала при его увольнении.

При увольнении, несмотря на то, что вернула правильную высоту ячейки (и высоту заголовка), а также обновленное количество строк (такое, что содержание прокрутки огромно), прокрутка только отскакивает при прокрутке. При просмотре свойства contentSize прокрутки таблицы contentSize является неправильным и совпадает с предыдущим.

При первоначальной загрузке оригинала tableVC у меня нет проблемы. Если у меня есть большое количество ячеек, таблица будет прокручиваться так, как ожидалось. Только при увольнении представленного tableVC я столкнулся с проблемой. Одна вещь, о которой я не уверен, - это когда вызывать reloadData. Я делаю это следующим образом:

1. в представленном tableVC:

[[self presentingViewController] dismissViewControllerAnimated:YES completion:nil]

2. в оригинальной таблицеVC:

-(void)viewDidAppear    
{ 
   //tablecell number manipulated
   [table reloadData];

}

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

Ответ 1

Добавьте

[table setNeedsDisplay]; 

Кроме того, есть ли особая причина, по которой вы не анимируете?

Ответ 2

Я решил это, явно перезагрузив раздел и не используя reloadData. [table reloadSections: [NSIndexSet indexSetWithIndex: 0] withRowAnimation: UITableViewRowAnimationAutomatic];

Ответ 3

У меня была аналогичная проблема. Я изменял количество строк и разделов статического tableView в ответ на данные, введенные в дочерний viewController, но при обновлении контента contentSize не выполнялся, что приводило к проблемам с прокруткой.

В моем случае, похоже, в iOS6 есть ошибка в reloadData, которая препятствовала правильному вычислению нового размера tableView (это отлично работало в iOS7). Я решил это, вызвав соответствующие вставки и удаляя строки и разделы, как описано здесь: UITableView не перезагрузит contentSize.