Swift UITableView автоматическая высота - PullRequest
0 голосов
/ 31 августа 2018

У меня есть дизайн, где 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 ()?

1 Ответ

0 голосов
/ 31 августа 2018

Проблема заключалась в том, что tableView (_ tableView: UITableView, cellForRowAt indexPath: IndexPath) не вызывал self.view.setNeedsLayout () перед возвратом строки.

...