Подходы К Спискам В Uicollectionview



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

С незапамятных времен мы писали пользовательский интерфейс в UITableView, не задумываясь об этом.

Накоплено бесчисленное количество ошибок и знаний о конструкции этого инструмента и лучших практиках.

И когда мы получили очередной дизайн бесконечной прокрутки, мы поняли: пора задуматься и дать отпор тирании UITableViewDataSource и UITableViewDelegate.



Почему коллекция?

До сих пор коллекции оставались в тени; многие опасались их чрезмерной гибкости или считали их функциональность избыточной.

В самом деле, почему бы просто не использовать стек или таблицу? Если по первому мы быстро упираемся в низкую производительность, то по второму не хватает гибкости при реализации расположения элементов.

Действительно ли коллекции так страшны и какие подводные камни они таят? Мы сравнили.

  • Ячейки таблицы содержат ненужные элементы: представление содержимого, представление группового редактирования, представление действий со слайдами, представление аксессуаров.

  • Использование UICollectionView обеспечивает согласованность при работе с любым списком объектов, поскольку его API в целом аналогичен UITableView.
  • Коллекция позволяет использовать нестандартные типы макетов, а также сопутствующие атрибуты анимированных переходов.

У нас также были некоторые опасения:
  • Возможность использовать Pull для обновления
  • Никаких лагов при рендеринге
  • Возможность пролистывания ячеек.

Но в ходе реализации они все исчезли.

Избавившись от класса таблицы, мы смогли написать адаптер, расширяемый для целого семейства списков, с возможностью безболезненного возврата к таблице под капотом в любое время.



Подходы к спискам в UICollectionView



Адаптеры

Коллекции — это, конечно, хорошо, но пробовали ли вы избавиться от привычного шаблона с источниками данных и делегатами, чтобы создание экранного списка занимало не более 10 строк? Для сравнения вспомним классическую реализацию экрана списка в UITableView.
   

final class CurrencyViewController: UIViewController { var tableView = UITableView() var items: [ViewModel] = [] func setup() { tableView.delegate = self tableView.dataSource = self tableView.backgroundColor = .

white

Теги: #iOS #разработка iOS #Разработка мобильных приложений #uikit #Swift #uicollectionview #uitableview #списки #адаптер шаблона
Вместе с данным постом часто просматривают: