tableViewCell
содержит viewController, высота которого вычисляется после того, как tableView завершает выкладку. Поэтому мне нужно вызвать tableView
, чтобы запросить снова высоту строк, вызвав метод heightForRowAtIndexPath
.Как вызвать tableView heightForRowAtIndexPath после просмотраDidLayoutSubviews вызывается?
Я пробовал setNeedsLayout
, он не работает, система не будет звонить heightForRowAtIndexPath
метод.
reloadData
или reloadRowsAtIndexPaths
не является хорошим выбором, потому что это будет перезагружать все клетки, и все viewControllers встроенной в клетки, и еще раз, когда ViewController будет закончен процесс компоновки и viewDidLayoutSubviews
называется, reloadData
будет вызван снова, так что это является бесконечным циклом.
Я тестировал tableView.beginUpdates() tableView.endUpdates()
пустую операцию обновления. Иногда он вызывает heightForRowAtIndexPath
, иногда нет.
если есть только определенные клетки, которые вы хотите обновить, вы можете использовать '(недействительные) reloadRowsAtIndexPaths: (NSArray *) indexPaths withRowAnimation: (UITableViewRowAnimation) animation'. но вам нужно будет вызвать любой из них, если вы хотите изменить высоту своей строки ...:/ – nburk
Можете ли вы показать какой-то код, может быть, это поможет. Если вы запускаете бесконечный цикл, вызывая 'reloadData', это звучит так, как будто у вас может быть проблема с вашим кодом, возможно, я могу помочь :) – nburk