swiftui - View 中的嵌套ForEach(和列表)会产生意外结果

标签 swiftui swiftui-list

在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)

                    }
                }
            }
        }
    }
}

还有:

enter image description here

关于swiftui - View 中的嵌套ForEach(和列表)会产生意外结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57861330/

相关文章:

animation - TabView 的 SwiftUI 动画选项卡

macos - SwiftUI - 多行文本 macOS

ios - 删除列表内披露组中的前导空格 (SwiftUI)

ios - 将按钮添加到导航栏标题 Swiftui

SwiftUI在PresentationMode上随机崩溃?.wrappedValue.dismiss()

SwiftUI - 如何在列表中编辑行?

swift - 如何将上下文菜单应用于 SwiftUI 列表行中的按钮?

swiftui - SwiftUI 中免费可扩展列表的要求是什么?

swift - 如何使用 SwiftUI 将变量传递到 MFMailComposeViewController() 中?

swiftui - Xcode14 beta(iOS 16)、SwiftUI、_clockHandRotationEffect 不再存在