Список SwiftUI не показывает ни одного элемента - PullRequest
0 голосов
/ 26 апреля 2020

Я хочу использовать NavigationView вместе с ScrollView, но я не вижу элементов списка.

struct ContentView: View {
    var body: some View {
        NavigationView {
            ScrollView{
                VStack {
                    Text("Some stuff 1")
                    List{
                        Text("one").padding()
                        Text("two").padding()
                        Text("three").padding()
                    }
                    Text("Some stuff 2")
                }
            }
        }
    }
}

Все, что я вижу, - это текст. Если я удаляю ScrollView, я вижу все это, но текст перемещается в самый низ. Я просто хочу иметь возможность добавлять списки и представления на красивую прокручиваемую страницу.

1 Ответ

0 голосов
/ 26 апреля 2020

ScrollView ожидает измерение от содержимого, но List ожидает измерение от контейнера - как вы видите, существует конфликт, поэтому размер списка не определен, и механизм визуализации результатов просто отбрасывает его, чтобы избежать неоднозначности.

Решение состоит в том, чтобы определить некоторый размер для List, в зависимости от ваших потребностей, поэтому ScrollView теперь будет определять, как его расположить, чтобы представление прокрутки могло прокручивать весь контент, а список мог прокручивать внутренний контент.

Например.

demo

struct ContentView: View {
    @Environment(\.defaultMinListRowHeight) var minRowHeight

    var body: some View {
        NavigationView {
            ScrollView{
                VStack {
                    Text("Some stuff 1")
                    List {
                        Text("one").padding()
                        Text("two").padding()
                        Text("three").padding()
                    }.frame(minHeight: minRowHeight * 3).border(Color.red)
                    Text("Some stuff 2")
                }
            }
        }
    }
}
...