我试图让SwiftUI ScrollView
滚动到抽象视图中的某个点,当在以编程方式调用抽象视图的视图中按下按钮时.这是我的代码:
struct AbstractedView: View {
@Namespace var view2ID
var body: some View {
ScrollView {
VStack {
View1()
View2()
.id(view2ID)
View3()
}
}
}
func scrollToView2(_ proxy: ScrollViewProxy) {
proxy.scrollTo(view2ID, anchor: .topTrailing)
}
}
如您所见,当调用scrollToView2()
(在ScrollViewReader
中)时,AbstractedView
滚动到view2ID
.我在不同的视图中以编程方式创建了许多AbstractedView
:
struct HigherView: View {
var numAbstractedViewsToMake: Int
var body: some View {
VStack {
HStack {
ForEach (0..<numAbstractedViewsToMake, id: \.self) { _ in
AbstractedView()
}
}
Text("button")
.onTapGesture {
/* call each AbstractedView.scrollToView2()
}
}
}
}
如果我将这些视图存储在我的HigherView
中的一个 struct 中的一个数组中,每个AbstractedView
有一个ScrollViewReader
,这行得通吗?我觉得应该有更好的方法来实现这一点,我只是不知道该怎么做.我是Swift的新手,谢谢你的帮助.
P、 我听说过UIKit,但我对它一无所知,现在是使用它的时候吗?