我有一个消息列表,存储在一个数组中,然后通过循环显示到屏幕上,这是在一个ScrollView
内。我想要的是当视图加载时,滚动视图一直滚动到底部,我试图用scrollTo
函数做,但是滚动视图保持在相同的位置,无论我传递给它的值是什么。有谁能告诉我该怎么做吗?
struct MessageList2: View {
@Binding var messages: [String]
var body: some View {
ScrollViewReader { value in
ScrollView() {
VStack(alignment: .leading) {
ForEach(0..<messages.count, id: .self) { index in
Text(messages[index])
}
}
.onAppear{
value.scrollTo(messages.count)
}
}
}
}
}
注意'messages数组从另一个函数接收值并且工作正常
我尝试以下的例子在线显示如何使用ScrollView
和scrollTo()
,并试图实现它自己,但视图保持不变。假设我用错了函数。我还尝试在Text()
下添加.id(index)
,但似乎不起作用。
这是一个差1的错误。请注意,您分配给每个项的id与元素的索引相同。messages
中可以出现的最大索引是messages.count - 1
,这意味着messages.count - 1
是最大可能的id。
所以你可能想要的是scrollTo(messages.count - 1)
而不是scrollTo(messages.count)
。