是因为ForEach需要在其父视图中使用一个可识别的集合来迭代。在SwiftUI中,VStack是一个容器视图,它不是一个可识别的集合,因此ForEach无法在其中正常工作。
要解决这个问题,可以将ForEach放置在一个可识别的集合上,例如Array或Range。以下是一个示例代码,演示了如何在两个VStack中使用ForEach:
import SwiftUI
struct ContentView: View {
let items = ["Item 1", "Item 2", "Item 3"]
var body: some View {
VStack {
ForEach(items, id: \.self) { item in
Text(item)
}
}
VStack {
ForEach(0..<items.count) { index in
Text(items[index])
}
}
}
}
在上面的示例中,我们创建了一个名为items的字符串数组,并在第一个VStack中使用ForEach来迭代数组中的每个元素。在第二个VStack中,我们使用ForEach和Range来迭代数组的索引,并通过索引访问数组中的元素。
对于SwiftUI中的列表,还可以使用List视图来替代VStack。List视图是一个可识别的集合,可以直接使用ForEach来迭代元素。以下是一个示例代码:
import SwiftUI
struct ContentView: View {
let items = ["Item 1", "Item 2", "Item 3"]
var body: some View {
List(items, id: \.self) { item in
Text(item)
}
}
}
在上面的示例中,我们使用List视图来创建一个可滚动的列表,并使用ForEach来迭代数组中的每个元素。
腾讯云相关产品和产品介绍链接地址:
请注意,以上链接仅供参考,具体产品选择应根据实际需求进行评估和决策。
领取专属 10元无门槛券
手把手带您无忧上云