![](https://habrastorage.org/r/w780/getpro/habr/upload_files/286/27c/d14/28627cd14993373705bc63fe5b6d9e09.jpg)
Мы продолжаем сражаться с шаблонным кодом в табличных экранах iOS-приложений.
В предыдущих статьях мы описали мотивы и подход, используемый для решения проблемы дублирования кода из контроллера в контроллер. Также мы показали детальную реализацию и возможности использования источника и провайдера данных для таблиц, которые позволяют ускорять разработку табличных экранов за счет переиспользования реализации протокола `UITableViewDataSource` в соответствии с принципами SOLID.
Однако, помимо источника данных для таблиц, почти в каждом экране надо реализовывать делегат (табличный делегат или делегат коллекции). Его методы вызываются при взаимодействии пользователя с таблицей или коллекцией, например при нажатии на ячейку. А значит, он тоже, как и источник данных, является причиной насыщения проектов шаблонным кодом.
В этой статье рассмотрим, как избавиться и от такого кода.