我不能让 ScrollViewReader 在我的 List() 上滚动。我读过很多这样或这样的讨论
我使用具有可识别协议和 id 作为 Int 的模型:
struct Country: Identifiable, Codable, Hashable {
// database fields
var id: Int64?
var name: String
}
我目前的看法是这样的:
ScrollViewReader { proxy in
VStack {
Button(action: {
proxy.scrollTo(38) // just a test
})
{ Text("Jump to") }
List() {
ForEach(countries) { country in
Button (action: {
wine.countryId = country.id
// pop
self.mode.wrappedValue.dismiss()
}) {
// cell content
HStack {
Image(country.flag).resizable().frame(width: 24.0, height: 24.0)
Text(country.name)
}
}
//.id(country.id)
}
}
}
}
}
我也尝试使用 an.id()
来识别每一行/按钮,但没有成功。我不知道我是否需要id()
使用ForEach()
该国家/地区的可识别协议来识别每个项目。
一件重要的事情:国家不按其 var id 的逻辑顺序 (1,2,3...) 显示。但即使使用id(country.id)
修饰符,它也永远不会滚动到列表的右行/按钮。
我们可以在网上找到的大多数示例都对行使用简单的索引迭代,而不是使用 struct() 的真实模型。