SwiftUI: Как получить представление прокрутки, чтобы содержать полную длину списка - PullRequest
0 голосов
/ 22 января 2020

У меня есть прокрутка, которая содержит vstack, который содержит текст и список. Список прокручивается независимо от вида прокрутки, что приводит к тому, что текст является заголовком списка. Вместо этого я хотел бы, чтобы список прокрутки был полностью расширен, чтобы все прокручивалось вместе.

ScrollView {
                VStack(alignment: .leading) {
                    Text(self.person.name)

                    Text(self.person.email)
                        .font(.subheadline)
                        .padding(.top)

                    Text(self.person.about)
                        .foregroundColor(.secondary)
                        .padding()

                    List {
                        Section {
                            ForEach(self.friends, id: \.id) { friend in
                                Text(friend.name)
                            }
                        }
                    }
                    Spacer()
                 }
                .padding()

            }

Вот что я получаю, когда прокручиваю список: enter image description here

1 Ответ

0 голосов
/ 22 января 2020

У вас есть два ScrollView здесь. Вам нужно использовать один List и поместить эти другие элементы в заголовок Section. К сожалению, List, похоже, не поддерживает заголовок для всего представления, как это делает UITableView.

    var body: some View {
        List {
            Section(header:
                VStack(alignment: .leading) {
                    Text(self.person.name)

                    Text(self.person.email)
                        .font(.subheadline)
                        .padding(.top)

                    Text(self.person.about)
                        .foregroundColor(.secondary)
                        .padding()
                }
            ) {
                ForEach(self.friends, id: \.id) { friend in
                    Text(friend.name)
                }
            }
        }
    }

РЕДАКТИРОВАТЬ: Возможно, вы даже не ищете заголовок? В этом случае просто поместите желаемый контент выше ForEach.

    var body: some View {
        List() {
            Section {

                VStack(alignment: .leading) {
                    Text(self.person.name)

                    Text(self.person.email)
                        .font(.subheadline)
                        .padding(.top)

                    Text(self.person.about)
                        .foregroundColor(.secondary)
                        .padding()
                }

                ForEach(self.friends, id: \.id) { friend in
                    Text(friend.name)
                }
            }
        }
    }

Вот результат с заголовком и без него:

enter image description hereenter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...