Ответ
SwiftUI предоставляет несколько компонентов для рендеринга коллекций, каждый со своей областью применения:
-
List– стандартный вертикальный список с нативным поведением iOS (разделители, жесты свайпа для удаления). Идеален для отображения простых строк или настраиваемых строк. Поддерживает секции, заголовки и подвалы.List(items) { item in Text(item.title) } -
ForEach– не визуальный контейнер, а структура данных, которая генерирует представления из коллекции. Используется внутри других лэйаутов (VStack,HStack,ScrollView). Требует, чтобы данные былиIdentifiable.VStack { ForEach(items) { item in RowView(item: item) } } -
ScrollViewсLazyVStack/LazyHStack– решение для кастомных, сложносоставных макетов (например, ленты).Lazy-стэки загружают элементы по мере необходимости, что эффективно для длинных списков, но они не переиспользуют ячейки какUITableView.ScrollView { LazyVStack { ForEach(items) { item in CardView(item: item) } } } -
Grid(iOS 16+) – система для создания выровненных сеток с помощью контейнеровGridи строкGridRow.Grid { ForEach(items) { item in GridRow { Image(systemName: item.icon) Text(item.name) } } }
Выбор компонента:
- Используйте
Listдля типичных списков настроек или данных. - Используйте
ScrollView + LazyVStackдля максимально кастомного дизайна ленты. - Используйте
Gridдля выровненных табличных данных или сеток изображений.