Как сделать два списка в одном окне прокрутки одной страницей в SwiftUI?

Я пытаюсь добавить две таблицы разных размеров в одно представление в SwiftUI. Я хочу, чтобы обе таблицы были полностью развернуты, а все представление прокручивалось как единое целое. На данный момент я получаю только обе таблицы фиксированного размера и прокручиваю отдельно.

some View {
    VStack {
        Text("Table foo")
        List(foo { item in Text(item.name) })

        Text("Table bar")
        List(bar { item in Text(item.name) })
    }
}

Пытался изменить VStack на ScrollView, стало еще хуже - таблицы становятся одним лайнером.

Также попытался заменить List() на ForEach(), но потом я потерял функции List(), которые мне действительно нужны.


person Maklaus    schedule 21.10.2019    source источник
comment
То, что вы ищете, - это не два разных списка! это collectionView с настраиваемым макетом водопада. Вы можете использовать UIKit для этого   -  person Mojtaba Hosseini    schedule 22.10.2019


Ответы (1)


Я думаю, вам нужен один список с несколькими ForEach. При желании вы можете сделать его сгруппированным списком с несколькими разделами. Следующая концепция, адаптированная для вашего образца, несколько раз работала у меня хорошо:

struct SwiftUIView: View {
    var body: some View {
        List {
            Section(header: Text("Table foo"))
            {
                ForEach(foo) { item in Text(item.name) }
            }
            Section(header: Text("Table bar"))
            {
                ForEach(bar) { item in Text(item.name) }
            }
        }
        .listStyle(GroupedListStyle())
    }
}
person Chuck H    schedule 16.12.2019