如何解决SwiftUI:如何将数组传递给要在 ForEach 中使用的视图
我想将元素数组传递给视图并使用 ForEach 显示元素。当我传递一个与前一个不同大小的数组时,它在行 Thread 1: Fatal error: Index out of range
上崩溃并显示错误 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)
}
}
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。