Возможно, ваши ограничения filterNameLabel созданы неправильно. Вам необходимо установить первое ограничение top индекса indexNameLabel равным ограничению top mainView. и последнее индексное ограничение filterNameLabel, равное нижнему ограничению mainView. И другие ограничения являются относительными, это означает, что следующее верхнее ограничение filterNameLabel равно предыдущему нижнему ограничению filterNameLabel. Всегда вызывайте метод layout при необходимости.
С другой стороны, если вы хотите использовать другой tableView внутри FiltersMenuCell, вы можете выполнить следующие действия:
1) Создать tableView внутри класса FiltersMenuCell. Инициализируйте это замыкание в этом классе.
@IBOutlet weak var tableView: UITableView!
var tableViewContentSizeHeight: CGFloat {
view.layoutIfNeeded()
return tableView.contentSize.height
}
2) Создайте ограничение высоты "mainView" в классе FiltersMenuCell глобально.
var mainView: UIView!
var heightConstraint: NSLayoutConstraint!
heightConstraint = mainView.heightAnchor.constraint(equalToConstant: 0)
heightConstraint.isActive = true
3) Обновление "heightConstraint" из cellForRowAt
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
if let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath) as? FiltersMenuCell {
cell.reloadData()
cell.heightConstraint.constant = cell.tableViewContentSizeHeight
return cell
}
return UITableViewCell()
}