Проблема с несколькими табличными представлениями в моем приложении.
Проблема возникает, когда содержимое таблицы изменяется (и, следовательно, содержимое таблицы увеличивается).
По какой-то причине contentSize UITableView остается тем же, что и я не могу прокрутить, чтобы увидеть новый контент.
Это происходит, когда конкретная ячейка становится больше (после [tableView reloadData];) или когда я добавляю новые ячейки (используя методы делегата NSFetchedResultsController).
Есть ли что-то, что мне нужно сделать для tableView, чтобы перенастроить его contentSize?
Изменить, чтобы показать код, но это всего лишь шаблонный код делегата NSFetchedResultsController...
- (void)controllerWillChangeContent:(NSFetchedResultsController *)controller {
// The fetch controller is about to start sending change notifications, so prepare the table view for updates.
[self.tableView beginUpdates];
}
- (void)controller:(NSFetchedResultsController *)controller didChangeObject:(id)anObject atIndexPath:(NSIndexPath *)indexPath forChangeType:(NSFetchedResultsChangeType)type newIndexPath:(NSIndexPath *)newIndexPath {
UITableView *tableView = self.tableView;
switch(type) {
case NSFetchedResultsChangeInsert:
[tableView insertRowsAtIndexPaths:[NSArray arrayWithObject:newIndexPath] withRowAnimation:UITableViewRowAnimationFade];
break;
case NSFetchedResultsChangeDelete:
[tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade];
break;
case NSFetchedResultsChangeUpdate:
[self configureCell:(OJFPunchListCell*)[tableView cellForRowAtIndexPath:indexPath] atIndexPath:indexPath];
break;
case NSFetchedResultsChangeMove:
[tableView deleteRowsAtIndexPaths:[NSArray
arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade];
[tableView insertRowsAtIndexPaths:[NSArray
arrayWithObject:newIndexPath] withRowAnimation:UITableViewRowAnimationFade];
break;
}
}
- (void)controller:(NSFetchedResultsController *)controller didChangeSection:(id )sectionInfo atIndex:(NSUInteger)sectionIndex forChangeType:(NSFetchedResultsChangeType)type {
switch(type) {
case NSFetchedResultsChangeInsert:
[self.tableView insertSections:[NSIndexSet indexSetWithIndex:sectionIndex] withRowAnimation:UITableViewRowAnimationFade];
break;
case NSFetchedResultsChangeDelete:
[self.tableView deleteSections:[NSIndexSet indexSetWithIndex:sectionIndex] withRowAnimation:UITableViewRowAnimationFade];
break;
}
}
- (void)controllerDidChangeContent:(NSFetchedResultsController *)controller {
// The fetch controller has sent all current change notifications, so tell the table view to process all updates.
[self.tableView endUpdates];
}
Я делал такие вещи раньше в iOS5 и никогда не испытывал проблем с этим. Кажется, это потенциально изменение iOS6?
:: EDIT::
Глупость в этом заключается в том, что у меня есть еще несколько UITableViewControllers в одном приложении, и все они работают нормально. Я могу добавлять новые ячейки, добавлять ячейки с динамическим размером, изменять размер ячеек и т.д.... и все таблицы прокручиваются должным образом вверх и вниз по всему содержимому.
Эта проблема сейчас происходит на нескольких таблицах, которые я добавил недавно.
:: EDIT::
ОК, просто выполните некоторую отладку. Когда я впервые перехожу в таблицу View, содержимое contentize.height равно 594.
Когда я добавляю новый элемент и возвращаюсь в тот же tableviewController, contentSize.height имеет значение 749.
Однако я не могу прокрутить, чтобы увидеть недавно добавленную ячейку внизу таблицыView. Это просто не прокручивается. Он отскакивает от старой высоты contentSize.