Несколько одинаковых View в LazyVGrid
Есть задача, реализовать вьюшку с несколькими элементами внутри в виде плитки разделённых на группы. Для этого использовал LazyVGrid и Section. Рисует отлично, но во в группах могут попадаться повторяющиеся элементы. Из-за этого оно крешится с ошибкой:
Fatal error: each layout item may only occur once: file SwiftUI, line 0
2021-04-26 11:35:24.956495+0300 Homfy[18490:290813] Fatal error: each layout item may only occur once: file SwiftUI, line 0
Мой пример кода:
LazyVGrid(columns: rows, alignment: .leading) {
ForEach (facility.floors) { floor in
Section(
header: Text(floor.name)
.foregroundColor(.white)
.font(.system(size: 14))
) {
ForEach(floor.neighbors, id: \.self.id) { item in
NeigborItemView(neighbor: item)
}
}
}
}
Не могу придумать способа как обойти эту проблему без особых костылей, т.к. мы можем использовать VStack и HStack, но это решение не очень.
P.S. Изначально помогало добавить вьюшке .id(UUID()), но пока не проскролишь список до определённого момента, при расширении списка и это уже не помогает.
Ответы (1 шт):
Нашел вот такое не совсем красивое, но всё же решение, мы переносим LazyVGrid на один уровень ниже:
ForEach (facility.floors) { floor in
LazyVGrid(columns: rows, alignment: .leading) {
Section(
header: Text(floor.name)
.foregroundColor(.white)
.font(.system(size: 14))
) {
ForEach(floor.neighbors, id: \.self.id) { item in
NeigborItemView(neighbor: item)
}
}
}
}
Вроде работает нормально, но как по мне должно быть более изящное решение.