У меня есть пользовательский UITableViewCell, в котором у меня есть UIView, который содержит несколько подзонов. В зависимости от случаев я скрываю некоторые из этих представлений, и я обновляю ограничения, чтобы родительский UIView по-прежнему был сосредоточен в моем UITableViewCell.UITableViewCell - ограничения обновляются только после перезагрузки
Моя проблема заключается в том, что из-за повторного использования соты это работает только в том случае, если ячейка не показана напрямую (если ячейка не является одной из верхних ячеек, которая отображается первой в таблице). В таких случаях, когда я прокручиваю вниз, и я прокручиваю назад, он работает снова. Картинки помогут мне объяснить это:
Это то, что отображается, когда UITableView загружен в первый раз. Первая ячейка представляет собой обычную ячейку со всей информацией, вторая ячейка - та, в которой первые элементы были скрыты.
Это то, что происходит, когда я прокручиваю вниз, а затем обратно вверх.
Как вы можете видеть, что это именно то, что я хочу. Ограничения были обновлены правильно, но только после того, как ячейка исчезла с видимого экрана и появилась снова.
[reviewsAndPriceView setNeedsUpdateConstraints];
[reviewsAndPriceView setNeedsLayout];
[reviewsAndPriceView layoutIfNeeded];
[self updateConstraints];
[self setNeedsUpdateConstraints];
[self setNeedsLayout];
[self layoutIfNeeded];
И все виды вариаций, но это не работает. Каков способ достичь этого?
Итак, где я должен сбросить все ограничения? В самом начале cellForIndexPath? Я пытался это сделать, но ничего не меняет. –
@bloemy после этой строки: 'cell = [tableView dequeCellWith .....];' – Dalvik
Это тоже не помогает. Итак, после создания ячейки я должен сбросить все мои ограничения до их первоначального значения и затем заменить их? Странная часть заключается в том, что сброс их тоже ничего не меняет. –