Как видно из названия, у меня есть пользовательский UITableCell, в котором у меня есть несколько UIStackViews.Каждый из этих стеков содержит много подпредставлений, но я просто хочу показать три из них, когда ячейка отображается в первый раз.Если пользователь хочет видеть больше, есть кнопка [+], которая вызывает метод, который добавляет оставшиеся.
Пользовательская высота ячейки определяется с помощью UITableViewAutomaticDimension, и она отлично работает для первого отображения ячейки, ноКогда я пытаюсь добавить и удалить подпредставления в стеке, существуют представления, которые не следует изменять, которые теряют свои ограничения, а те, которые должны отображаться, в некоторых случаях этого не делают.Я хотел бы показать все метки UILabel и высоту обновляемой ячейки.
Метод, который вызывается при нажатии кнопки [+], следующий:
@objc private func changeImage(sender: UIButton) {
let index = (Int(sender.accessibilityValue!)!)
let open : Bool = openItem[index]
let plateStack : UIStackView = plateStacks[index]
let plates : [UILabel] = platesViews[index]
if !open {
sender.setImage(UIImage(named: "less")?.withRenderingMode(.alwaysTemplate), for: .normal)
let nPlatesToAdd = max(platesViews[index].count - 3, 0)
for i in 0..<nPlatesToAdd {
let plate = plates[i + 3]
plateStack.addArrangedSubview(plate)
plate.leadingAnchor.constraint(equalTo: plateStack.leadingAnchor, constant: 0).isActive = true
plate.trailingAnchor.constraint(equalTo: plateStack.trailingAnchor, constant: 0).isActive = true
}
}
else {
sender.setImage(UIImage(named: "more")?.withRenderingMode(.alwaysTemplate), for: .normal)
var i = plateStack.arrangedSubviews.count - 1
while i > 2 {
let view = plateStack.arrangedSubviews[i]
plateStack.removeArrangedSubview(view)
view.removeFromSuperview()
i = i - 1
}
}
openItem[index] = !open
}
Первое отображение ячейки (все в порядке) и после нажатия на кнопку [+]: