У меня есть дизайн, где UITableView находится в UIScrollView с другим содержимым, а содержимое прокручивается с данными таблицы. Это означает, что в таблице отключена прокрутка, и она растянута до полного размера.
Я использую autolayout, и таблица имеет ограничение по высоте, для которого установлено какое-то значение по умолчанию.
Тогда я переписал метод viewWillLayoutSubviews:
override func viewWillLayoutSubviews() {
super.viewWillLayoutSubviews()
if (self.itemTableView.contentSize.height > 0) {
self.itemTableViewHeightConstraint.constant = self.itemTableView.contentSize.height
}
}
С этим методом, когда я вызвал self.itemTableView.reloadData () после загрузки данных из REST, ограничение высоты было установлено на высоту содержимого таблицы, что было здорово.
Раньше это работало для меня во многих проектах, но по какой-то причине не работает в последнем, написанном на swift 4. Что-то изменилось? Почему метод tableView reloadData () не вызывает viewWillLayoutSubviews ()?