Поведение # 1: Я пытаюсь получить текст, прежде чем у меня будет список элементов, и все будет последовательно прокручиваться. Я пытался изменить код во многих аспектах, и в результате я получил неправильное поведение. Вот код для поведения_1:
struct Thing: Hashable {
var name: String
var number: Int
}
struct SummaryView: View {
var things = [Thing(name: "Paul", number: 42),Thing(name: "Jackie", number: 41),Thing(name: "James", number: 49),Thing(name: "Paola", number: 22)]
var body: some View {
VStack(alignment: .leading){
Text("Text 1")
Text("Text 2")
Text("Text 3")
Text("Text 4")
List{
ForEach(self.things, id: \.self){ thing in
VStack(alignment: .leading){
Text(thing.name)
Text("\(thing.number) Years")
.foregroundColor(Color.blue)
}
.padding()
.frame(minWidth: 0, maxWidth: .infinity, alignment: Alignment.leading)
}
}
Spacer()
NavigationLink(destination: Text("HI")){
Text("Finished")
}
}.edgesIgnoringSafeArea(.bottom)
}
}
Это позволяет создать небольшой раздел экрана со списком, который можно прокручивать: это означает, что я могу видеть только около 1 элемента списка за рази я могу только прокрутить этот раздел представления (элементы списка).
Поведение № 2: Я также попытался поместитьПеречислите внутри ScrollView
, это указывает на поведение_2, в котором есть две различные прокручиваемые области: первая - это область с текстом («Текст 1» и т. Д.) И контейнер / представление списка (имеется в виду Iне может прокручивать отдельные элементы), вторая область прокрутки является фактическими элементами в списке, но как только я достигаю верхнего элемента, секция прокрутки не переходит к тексту и т. д .:
import SwiftUI
struct Thing: Hashable {
var name: String
var number: Int
}
struct SummaryView: View {
var things = [Thing(name: "Paul", number: 42),Thing(name: "Jackie", number: 41),Thing(name: "James", number: 49),Thing(name: "Paola", number: 22)]
var body: some View {
ScrollView{
VStack(alignment: .leading){
Text("Text 1")
Text("Text 2")
Text("Text 3")
Text("Text 4")
List{
ForEach(self.things, id: \.self){ thing in
VStack(alignment: .leading){
Text(thing.name)
Text("\(thing.number) Years")
.foregroundColor(Color.blue)
}
.padding()
.frame(minWidth: 0, maxWidth: .infinity, alignment: Alignment.leading)
}
}.aspectRatio(contentMode: .fit)
Spacer()
NavigationLink(destination: Text("HI")){
Text("Finished")
}
}
}.edgesIgnoringSafeArea(.bottom)
}
}
У меня естьтакже пытался переключить ScrollView с помощью VStack, чтобы получить что-то вроде этого:
VStack(alignment: .leading){
ScrollView {
.
.
.
}
}
И это ведет себя как поведение_2:
Любые предложения о том, как я могу получитьЖелаемое поведение (когда вы прокручиваете тексты, вы затем прокручиваете элементы списка (то есть, чем меньше текста, тем больше прокручиваете), пока не достигнете нижней части списка и т. д.)?
OfКонечно, я не реализовал новое представление «Список», а затем использовал для каждого цикла итерацию по элементам