![](/img/trans.png)
[英]How to have ForEach in view updated when array values change with SwiftUI
[英]SwiftUI: how to pass an array to a View to be used in ForEach
我想将元素数组传递给视图并使用 ForEach 显示元素。 当我传递一个与前一个不同大小的数组时,它会因错误Thread 1: Fatal error: Index out of range
on line Text(elements[$0])
而崩溃。
我的代码是这样的:
struct ContentView: View {
private let arrays = [["One", "Two", "Three"], ["Four", "Five"]]
@State private var selectedArray = 0
var body: some View {
AnotherView(elements: arrays[selectedArray])
Picker("Select Array", selection: $selectedArray) {
ForEach(arrays.indices) {
Text("Array \($0)")
}
}
}
}
struct AnotherView: View {
var elements: [String]
var body: some View {
VStack {
ForEach(elements.indices) {
Text(elements[$0])
}
}
}
}
有没有办法达到预期的结果?
ForEach(_:content:)
应该只用于常量数据。 而是使数据符合Identifiable
或使用ForEach(_:id:content:)
并提供明确的id
!
尝试这个:
struct AntorherView: View {
var elements: [String]
var body: some View {
VStack {
ForEach(elements, id:\.self) { i in
Text(i)
}
}
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.