У меня есть специальный UIPickerView
, где строки выбираются вручную, нажав на них. Когда это происходит, меняется стиль выбранной строки (меняется цвет текста и отображается изображение с галочкой). Аналогичным образом, если выбрана другая строка, ранее выбранная строка «отменяет выбор», т. е. ее стиль меняется на обычный.
Теперь, когда я выбираю строку, она выглядит правильно:
Но когда я прокручиваю до другой строки, а выбранная строка больше не находится посередине, ее новый стиль не применяется (здесь следует выбрать Антарктис):
Однако, если я прокрутлю несколько строк вниз, а затем вернусь, он обновит строку до ее правильного стиля:
У меня такая же проблема при отключении. Если я выберу другую строку, старая строка, по-видимому, не будет отменена, и я получу это (сейчас Антарктида должна быть отменена):
Но если я прокручиваю строку Антарктиды назад посередине, она действительно снимается. Итак, моя проблема в том, что UIPickerView
не сразу перерисовывает строки, которые видны, но не в середине (вероятно, они каким-то образом кэшируются). Они перерисовываются только тогда, когда конкретная строка выходит из поля зрения, а затем возвращается, или когда отображаются совершенно новые строки.
Так могу ли я заставить его перерисовать эти строки? Я попытался вызвать метод setNeedsDisplay
как для UIPickerView
, так и для конкретных строк (которые являются подклассами UITableViewCell
), но это ничего не дало.
Благодарю вас!