Я использую UITableView
с estimatedRowHeight
и UITableViewAutomaticDimension
. Также я использую NSFetchedResultsControllerDelegate
для отражения изменений.
Все отлично работает. Теперь проблема заключается в том, когда когда-либо добавляю какую-либо запись в CoreData
, NSFetchedResultsController
, называемую ее делегатом, но происходят неожиданные вещи. TableView неожиданно прокручивается до Верх каждый раз.
NSFetchedResultsControllerDelegate
func controllerWillChangeContent(controller: NSFetchedResultsController) {
tableView.beginUpdates()
}
func controllerDidChangeContent(controller: NSFetchedResultsController) {
tableView.endUpdates()
}
func controller(controller: NSFetchedResultsController, didChangeObject anObject: AnyObject, atIndexPath indexPath: NSIndexPath?, forChangeType type: NSFetchedResultsChangeType, newIndexPath: NSIndexPath?) {
switch type {
case .Insert:
tableView.insertRowsAtIndexPaths([newIndexPath!], withRowAnimation: .None)
break
case .Update:
tableView.reloadRowsAtIndexPaths([indexPath!], withRowAnimation: .None)
break
case .Delete:
tableView.deleteRowsAtIndexPaths([indexPath!], withRowAnimation: .None)
break
default: break;
}
}
По googling я нашел несколько ответов , где люди предлагали использовать tableView: heightForRowAtIndexPath:
, но поскольку моя высота ячейки динамическая. И что же мне делать?