在SwiftUI View 中的另一个ForEach中执行ForEach会产生意外的结果-几乎就像它们踩着对方的柜台一样。目前尚不清楚发生了什么。我需要显示多分支数组,并尝试了多种变体,但仍然遇到相同的问题
我有几个项目已经提出来。尝试使用范围(0 ..
这只是一个Beta版问题,还是我缺少什么?我已经包含了一个演示该问题的示例项目。
使用XCode 11 Beta(11M392r)
谢谢!
import SwiftUI
struct ContentView: View {
let topTier:[String] = ["Apple", "Banana", "Cherry"]
let nextTier:[String] = ["Abalone", "Brie", "Cheddar"]
var body: some View {
List {
ForEach (topTier.indices, id: \.self) { a in
Text(self.topTier[a])
ForEach (self.nextTier.indices, id: \.self) { b in
Text(self.nextTier[b]).padding(.leading, 20)
}
}
}
}
}
在最合适的ForEach上引发“对成员'索引'的歧义引用”。
如果对内部ForEach进行了注释,则可以显示水果
如果对外部ForEach进行评论,则可以显示奶酪
我希望它显示:
苹果
鲍鱼
布里干酪
切达干酪
香蕉
鲍鱼
布里干酪
切达干酪
樱桃
鲍鱼
布里干酪
切达干酪
最佳答案
在此Beta周期中,由于@ViewBuilder
中新的SwiftUI
语法带来的许多错误,“Ambiguous reference…”消息是一条红色鲱鱼。您的问题是ForEach
闭包需要一个 View ,而不是 View 构建器。
您可以通过简单地将ForEach
闭包的主体包装在Group
中来使 View 工作,如下所示:
import SwiftUI
struct ContentView: View {
let topTier:[String] = ["Apple", "Banana", "Cherry"]
let nextTier:[String] = ["Abalone", "Brie", "Cheddar"]
var body: some View {
List {
ForEach (topTier.indices, id: \.self) { a in
Group {
Text(self.topTier[a])
ForEach (self.nextTier.indices, id: \.self) { b in
Text(self.nextTier[b]).padding(.leading, 20)
}
}
}
}
}
}
还有:
关于swiftui - View 中的嵌套ForEach(和列表)会产生意外结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57861330/