Я хочу иметь ячейку с заголовком с заголовком и переключателем.Когда переключатель включен, он должен показывать содержимое, расширяющее ячейку с анимацией.Заголовок должен быть всегда видимым и иметь постоянную высоту.
Ячейка состоит из представления контейнера с 2 подпредставлениями, заголовка и тела.В теле есть метка для содержимого ячейки.
В ячейке есть делегат, который сообщает контроллеру о необходимости перезагрузить содержимое следующим образом:
tableView.beginUpdates()
tableView.endUpdates()
(Ничего промежуточного. Должен ли я указать что-топросто чтобы быть уверенным?)
Я пытался установить ограничение высоты для заголовка и один для тела, а когда коммутатор обновляет свое значение, я обновляю ограничение тела до высоты метки (вычислениеделается правильно).Я также попытался иметь единственное ограничение для контейнера (постоянная высота заголовка + высота надписи + заполнение), которое также не работало.
Контроллер имеет делегат tableView.Я не устанавливаю примерную высоту строки (не так ли?) И для heightForRowAt
я возвращаю UITableView.automaticDimension
.
Если у вас есть какие-либо предложения о том, как это можно сделать, даже для другого представления/ subviews организации, пожалуйста, прокомментируйте.
![enter image description here](https://i.stack.imgur.com/A1lmT.png)
РЕДАКТИРОВАТЬ:
Это была на самом деле глупая ошибка.Я обновлял ограничения после того, как позвонил в свою делегатскую ячейку.Для дальнейшего использования я выкладываю здесь код.
func configure(with reminder: Reminder, delegate: CellUpdateDelegate) {
self.delegate = delegate
self.reminder = reminder
bodyLabel.text = reminder.body
headerTitle.text = reminder.title
let height = bodyLabel.requiredHeight + 16
containerHeight.constant = 48 + (alertSwitch.isOn ? height : 0 )
}
@objc func switching() {
let height = bodyLabel.requiredHeight + 16
containerHeight.constant = 48 + (alertSwitch.isOn ? height : 0 )
delegate?.didSelect(reminder)
}