«UITableView кэширует видимые ячейки и уничтожает их, когда ячейка больше не видна».Это верно только в том случае, если вы не предоставите идентификатор повторного использования.
Предполагая, что вы работаете в подробном представлении, где каждая ячейка представляет (по крайней мере, концептуально) свойство некоторого объекта модели, вы можете назначить каждомуячейка уникальный идентификатор повторного использования.Вы можете установить это непосредственно в Интерфейсном Разработчике, или, если вы создаете ячейки программно, передавая его в качестве аргумента initWithStyle:reuseIdentifier:
или initWithFrame:reuseIdentifier
.
При наличии идентификатора повторного использования, табличное представление будеткэшировать клетки на весь срок их службы.Чтобы получить ячейку из кэша, используйте
cell = [tableView dequeueReusableCellWithIdentifier:@"Some Identifier You Made Up"];
. Снова используйте различные идентификаторы, чтобы различать уникальные ячейки, если это необходимо.
Альтернатива для подробного представления с фиксированным числом уникальных ячеек.хранить ссылку на каждую ячейку в переменной экземпляра (или сохранять целую группу из них в коллекции).Пока вы сохраняете переменные экземпляра, ячейки не будут освобождены, даже если вы не удосужились предоставить идентификаторы повторного использования.