我想要自动滚动到ScrollView中的特定视图,只需轻触按钮.我知道如何让它与ForEach视图一起工作(在线和堆栈溢出上都有这样的例子),但如果没有ForEach,我就不能让它工作.
下面是它与ForEach一起工作的一个示例:
struct ContentView: View {
@State private var shouldScrollToBottom = false
var body: some View {
ScrollView {
VStack {
Button("Scroll to Bottom") {
shouldScrollToBottom = true
}
.padding()
ScrollViewReader { scrollViewProxy in
LazyVStack {
ForEach(0..<50) { index in
Text("Item \(index)")
.frame(width: 200, height: 50)
.background(Color.blue)
.cornerRadius(10)
.padding()
.id(index)
}
}
.onChange(of: shouldScrollToBottom) { scrollToBottom in
if scrollToBottom {
withAnimation {
scrollViewProxy.scrollTo(49, anchor: .bottom)
}
shouldScrollToBottom = false
}
}
}
}
}
}
}
这个代码起作用了.
但我想使用个人视图(而不是ForEach).
下面是一个例子:
struct ContentView: View {
var body: some View {
VStack {
ScrollView {
Button("Scroll to view 4") {
}
.padding()
VStack {
Divider()
View1()
Divider()
}
VStack {
Divider()
View2()
Divider()
}
VStack {
Divider()
View3()
Divider()
}
VStack {
Divider()
View4()
Divider()
}
VStack {
Divider()
View5()
Divider()
}
}
}
}
}
在此视图中,如何使其在轻按按钮时滚动到视图4?