У меня есть UITableViewCell
, который выглядит как CardView . Внутри ячейки я должен отобразить некоторый динамический c контент. Вот почему у меня есть stackview
внутри моей ячейки, в которой будет мой динамический c контент. Но проблема в том, что метод cellForRowAt вызывается каждый раз при прокрутке и в стеке появляются дополнительные элементы.
Как мне решить эту проблему? Как я справился с проблемой самостоятельно?
Я нашел prepareForReuse
метод UITableViewCell
, который вызывается перед повторной настройкой по ячейке. В этом методе я очищаю свой stackView. И теперь у моего stackview не будет дополнительных просмотров. Но это плохо для производительности. Следующий способ, который я пробовал, - это держать в ячейке какой-то флаг, который сообщает мне, что stackview уже настроен. Но этот подход не помог (да, он не добавит дополнительных элементов, но содержимое внутри ячеек будет неправильно размещено), как проверка длины стека.
Вот мой псевдокод:
/// called in cellForRowAt
func configure(item: Item) {
item.forEach {
stackView.addArrangedSubview(ItemView(item))
}
}
func prepareForReuse() {
stackView.arrangedSubviews.forEach {
$0.removeFromSuperView()
}
}