Авторазмер ячейки табличного представления с фиксированным представлением - PullRequest
0 голосов
/ 28 октября 2018

Я хочу иметь ячейку с заголовком с заголовком и переключателем.Когда переключатель включен, он должен показывать содержимое, расширяющее ячейку с анимацией.Заголовок должен быть всегда видимым и иметь постоянную высоту.

Ячейка состоит из представления контейнера с 2 подпредставлениями, заголовка и тела.В теле есть метка для содержимого ячейки.

В ячейке есть делегат, который сообщает контроллеру о необходимости перезагрузить содержимое следующим образом:

tableView.beginUpdates()
tableView.endUpdates()

(Ничего промежуточного. Должен ли я указать что-топросто чтобы быть уверенным?)

Я пытался установить ограничение высоты для заголовка и один для тела, а когда коммутатор обновляет свое значение, я обновляю ограничение тела до высоты метки (вычислениеделается правильно).Я также попытался иметь единственное ограничение для контейнера (постоянная высота заголовка + высота надписи + заполнение), которое также не работало.

Контроллер имеет делегат tableView.Я не устанавливаю примерную высоту строки (не так ли?) И для heightForRowAt я возвращаю UITableView.automaticDimension.

Если у вас есть какие-либо предложения о том, как это можно сделать, даже для другого представления/ subviews организации, пожалуйста, прокомментируйте.

enter image description here

РЕДАКТИРОВАТЬ:

Это была на самом деле глупая ошибка.Я обновлял ограничения после того, как позвонил в свою делегатскую ячейку.Для дальнейшего использования я выкладываю здесь код.

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)
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...