我想要一个带有标题和开关标题的单元格。当开关打开时,它应显示带有动画扩展单元格的内容。标头应始终可见且高度恒定。
该单元格由一个包含2个子视图,标题和主体的容器视图组成。身体上有一个标记单元格内容的标签。
单元格有一个委托,告诉控制器像这样重新加载内容:
tableView.beginUpdates()
tableView.endUpdates()
(介于两者之间。我是否应该确定某些内容?)
我尝试对标头设置一个高度限制,对主体设置一个高度限制,当开关更新其值时,我将主体的约束更新为标签的高度(计算正确完成)。我还尝试过对容器设置一个单一的约束(恒定的标头高度+标签高度+填充),但这也没有用。
控制器具有的是tableView的委托。我没有设置估计的行高(应该吗?),对于heightForRowAt
我要返回UITableView.automaticDimension
。
如果您对如何完成操作有任何建议,即使对于其他视图/子视图组织,也请发表评论。
编辑:
这实际上是一个愚蠢的错误。调用委托单元后,我正在更新约束。为了将来参考,我将代码发布在这里。
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)
}