У меня есть UITableViewCell
с UILabel
и UIImageView
.Изображение может быть видимым или скрытым.
Вот моя раскадровка:
Есть два ограничения на задней части UILabel
, одно (a), который равен 8 с UIImageView
, другой (b), который больше или равен 8 с правым полем ячейки.Я сохраняю ссылку на первый (а) и активирую или деактивирую ограничение, если есть или нет какой-либо звук.
Вот мой код:
class MyTableViewCell: UITableViewCell {
@IBOutlet weak var label: UILabel?
@IBOutlet weak var icon: UIImageView?
@IBOutlet weak var spaceBetweenIconAndLabelConstraint: NSLayoutConstraint?
override func awakeFromNib() {
super.awakeFromNib()
icon?.image = UIImage(named: "sound")
}
func config(with name: String, hasSound: Bool) {
label?.text = name
configSound(hasSound)
}
private func configSound(_ hasSound: Bool) {
icon?.isHidden = !hasSound
spaceBetweenIconAndLabelConstraint?.isActive = hasSound
}
}
У меня естьнесколько ячеек с видимой иконкой звука, много без.Вот как это выглядит, когда конкретная ячейка появляется впервые:
И как она выглядит, когда снова появляется на экране:
Я понимаю, что проблема связана с повторным использованием ячейки.Но я не понимаю, как я могу предотвратить это поведение.Я попытался сделать:
override func prepareForReuse() {
configSound(true)
}
, чтобы повторно активировать ограничение перед повторным использованием ячейки, но оно не работает.