ScrollTo 函数在 SwiftUI 中不会滚动到底部



我有一个消息列表,存储在一个数组中,然后通过循环显示到屏幕上,这是在一个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数组从另一个函数接收值并且工作正常

我尝试以下的例子在线显示如何使用ScrollViewscrollTo(),并试图实现它自己,但视图保持不变。假设我用错了函数。我还尝试在Text()下添加.id(index),但似乎不起作用。

这是一个差1的错误。请注意,您分配给每个项的id与元素的索引相同。messages中可以出现的最大索引是messages.count - 1,这意味着messages.count - 1是最大可能的id。

所以你可能想要的是scrollTo(messages.count - 1)而不是scrollTo(messages.count)

最新更新