2010-02-18 3 views
0

Итак, у меня есть хорошо работающий UITableView, состоящий из 3 строк (каждый из которых содержит и изображение, а также различное количество текстовых полей).UISegmentedControl делает UITableView медленным/отстающим?

Теперь у 4-й строки есть UISegmentedControl. Как только я добавил его, UITableView лагает/прыгает/пропускает. Когда я забираю это снова, все становится гладко.

Как добавить UISegmentedControl и по-прежнему иметь плавную прокрутку?

+0

Как добавить это сейчас? Возможно, вам будет легче помочь увидеть ваш код. – Vladimir

ответ

1

У вас была аналогичная проблема. После того, как сегментированное управление исчезнет из вида, прокрутка назад к нему нестабильна. Проблема может быть инициализацией.

Сначала проверьте, если вы используете «dequeueReusableCellWithIdentifier» правильно (возможно, вы пропустили давая пользовательский клеточными уникальный идентификатор?)

Второй чек, если вы не делаете removeAllSegments и insertSegmentWithTitle каждый раз, когда в cellForRowAtIndexPath. Добавьте некоторую int в свою пользовательскую ячейку, чтобы сообщить вам, является ли она новой ячейкой или повторно используемой ячейкой с определенным количеством сегментов. Затем после того, как вы «dequeueReusableCellWithIdentifier», если ячейка имеет точное количество сегментов, очистка и добавление не нужны.

В моем случае я проверил первый, но не второй, который сделал мое прокручивающееся отставание. Похоже, что очистка и добавление сегмента - дорогостоящая операция.

Надеюсь, это поможет.

1

У меня была аналогичная проблема. Из-за бизнес-логики мое приложение должно обновлять ячейки в течение нескольких секунд. Каждая ячейка имела сегментированный элемент управления, и я удалял все сегменты и добавлял их снова для каждого обновления. Через некоторое время прокрутка становится невероятно медленной. Я решил проблему удаления/добавления сегментов только тогда, когда это было действительно необходимо, а не для этого для каждого обновления. Также я использую «dequeueReusableCellWithIdentifier». Сейчас он работает нормально.

Смежные вопросы