Я знаю, что этот вопрос немой. Но неожиданно застрял в этом вопросе.Должен ли я использовать dequeReusableCellWithIdentifier?
Когда я использую dequeReusableCellWithIdentifier, ячейки повторно используются. Более конкретно, сначала 'n' набор ячеек повторно используется вместе с их .
Поскольку одни и те же ссылки повторно используются, я не могу фактически хранить локальные переменные в ячейках. Мне действительно нужно назначать их каждый раз в cellForRowAtIndexPath
Предположим, что я использую пользовательский комплекс UITableviewcell. (Я знаю, что мы должны уменьшить сложность, но все же ...)
Некоторые элементы должны быть добавлены в ячейку.
Лучший пример, который я мог придумать, - это слайдер изображения.
Таким образом, количество изображений на слайдере изображения зависит от источника данных. Поэтому мне нужно добавить представления в cellForRowAtIndexPath. Не могу этого избежать.
Поскольку эта же ссылка на ячейки повторно используется, мне нужно добавить эти представления каждый раз, когда вызывается cellForRowAtIndexPath. Я думаю, что это тяжелая нагрузка.
Я думал использовать DrawRect метод, но он не работает с UITableViewAutomaticDimension
Если я не использую dequeReusableCell, я буду иметь индивидуальные ссылки клетки, но это будет стоить память и производительность.
Итак, что является лучшим решением? Могу ли я использовать dequeReusableCell и все еще не нужно переписывать его содержимое?
Редактировать 1: Упомянув dequeReusableCell, я упомянул dequeueReusableCellWithIdentifier - forIndexPath. Прошу прощения за путаницу.
Edit 2: Я чувствую, что я не так ясно в моем вопросе.
Давайте рассмотрим, что у меня есть массив в моем контроллере view. Я конфигурирование своей ячейки в cellForRowAtIndexPath с dequeueReusableCellWithIdentifier - forIndexPath
Так что же происходит, каждый раз я прокрутку, когда невидимые строки становятся видимыми, cellForRowAtIndexPath называются.
Скажем, у меня есть слайдер изображения с n изображениями. Для каждой ячейки это «n» отличается. Поэтому я вынужден рисовать представление ячейки на основе своего источника данных.
Таким образом, каждый раз, когда tableView вызывает cellForRowAtIndexPath, ячейка настроена снова и снова.
Я хочу избежать этого, чтобы улучшить производительность.
Не сохраняйте ссылки. Каждый раз, когда вам нужна ссылка на * visible * cell в 'indexPath' - вызов' if let cell = tableView.cellForRowAtIndexPath (indexPath) {} ' –
Надеюсь, что cellForRowAtIndexPath больше не будет возвращать нуль. Так что эта проверка бесполезна. Исправьте меня, если неправильно –
'cellForRowAtIndexPath (_ :)' return 'nil', если ячейка в' indexPath' не отображается или 'indexPath' находится за пределами допустимого диапазона. –