2. 7.8
Название
Тип
Тег №2Тег №1
Станция метро
Адерс места
Название места
Лучшие Недавние
Lorem ipsum dolor sit amet, consectetur
adipiscing elit, sed do eiusmod tempor
incididunt ut labore et dolore magna aliqua.
Ut enim ad minim veniam, quis nostrud
exercitation ullamco…... далее
Имя пользователя
Дата
Lorem ipsum dolor sit amet, consectetur
adipiscing elit, sed do eiusmod tempor
incididunt ut labore et dolore magna aliqua.
Ut enim ad minim veniam, quis nostrud
exercitation ullamco… далее
Заголовок блока
Важная информация
Дополнительная информация
Режим работы
Расписание работы
Режим работы:
3. 7.8
Название
Тип
Станция метро
Адерс места
Название места
Лучшие Недавние
Заголовок блока
Важная информация
Lorem ipsum dolor sit amet, consectetur
adipiscing elit, sed do eiusmod tempor
incididunt ut labore et dolore magna aliqua.
Ut enim ad minim veniam, quis nostrud
exercitation ullamco… далее
Дополнительная информация
Дополнительная информация
Дополнительная информация
Тег №2Тег №1
Lorem ipsum dolor sit amet, consectetur
adipiscing elit, sed do eiusmod tempor
incididunt ut labore et dolore magna aliqua.
Ut enim ad minim veniam, quis nostrud
exercitation ullamco…... далее
Имя пользователя
Дата
Режим работы
Расписание работы
Режим работы:
4. 7.8
Название
Тип
Лучшие Недавние
Заголовок блока
Важная информация
Lorem ipsum dolor sit amet, consectetur
adipiscing elit, sed do eiusmod tempor
incididunt ut labore et dolore magna aliqua.
Ut enim ad minim veniam, quis nostrud
exercitation ullamco…... далее
Имя пользователя
Дата
Режим работы
Расписание работы
Режим работы:
Lorem ipsum dolor sit amet, consectetur
adipiscing elit, sed do eiusmod tempor
incididunt ut labore et dolore magna aliqua.
Ut enim ad minim veniam, quis nostrud
exercitation ullamco… далее
Станция метро
Адерс места
Название места
Дополнительная информация
Дополнительная информация
Дополнительная информация
Дополнительная информация
Тег №2Тег №1
5. Построение сложного табличного интерфейса
Постановка задачи – Афиша iOS
• Уметь строить 30+ различных ячеек
• Располагать ячейки в различном порядке в зависимости
от 10 + конфигураций экрана
• В будущем необходимо добавлять новый ячейки /
конфигурации экрана
7. Построение сложного табличного интерфейса
• Неконтролируемый рост полотна кода в cellForRow
• Сложно добавлять новые ячейки, модифицировать
порядок ячеек
• Нарушение принципа единственной ответственности
(SOLID)
Решение в лоб - Проблемы
9. Построение сложного табличного интерфейса
Шаг 1. Внедряем View-модели 🐣
Модель представления - абстракция представления,
которая содержит свойства Модели.
26. Построение сложного табличного интерфейса
Выводы
1. Внедрение view-моделей дает: слабую связность, дополнительный
слой между моделью и view
2. Никакой логики во view
3. Чистый и универсальный cellForRow, heightForRow
4. Внедрение билдера дает: разделение логики построения блоков ячеек
от логики сбора их вместе
5. Легкая возможность расширения данной схемы. Как появление новых
блоков/ячеек, так и появление новых экранов, например - для квестов!
6. Модульность кода
27. Построение сложного табличного интерфейса
Литература и ссылки
The "Gang of Four” - Design Patterns: Elements of Reusable
Object-Oriented Software
Erick Buck, Donald Yachtman - Cocoa Design Patterns
OBJC.IO Issue 13 - Architecture
OODesign.com - Builder pattern
NimbusKit - Table View Models