【问题标题】:SwiftUI ForEach-Loops getting errorsSwiftUI ForEach-Loop 出现错误
【发布时间】:2020-02-20 09:46:33
【问题描述】:

我正在尝试在 SwiftUI 中构建一个 ForEach()-Loop 来构建 UI 元素,但我收到了以下错误消息:

无法推断复杂的闭包返回类型;添加显式类型以消除歧义

这是我的代码:

    var body: some View {
        HStack {
            HStack {
                VStack {
                    ForEach((1...10).reversed(), id: \.self) {
                        Text("\($0)")
                        Spacer()
                    }
                    Spacer()
                }
                Spacer()
            }
            Spacer()
        }
    }

错误指向与 ForEach-Statement 的行。我尝试按照 Paul Hudson 的教程进行操作,请参阅:https://www.hackingwithswift.com/quick-start/swiftui/how-to-create-views-in-a-loop-using-foreach

【问题讨论】:

    标签: swift for-loop swiftui


    【解决方案1】:

    简而言之:从ForEach 中删除Spacer()。 ForEach 期望返回some View 类型的一个值。 您可以将Text() 和Spacer() 包装成HStack 或VStack,但在这种情况下,您无法通过闭包语法访问数组中的每个数字($0 表示法应更改为{ element in } )。 所以下一个代码可以工作:

    var body: some View {
        HStack {
            HStack {
                VStack {
                    ForEach((1...10).reversed(), id: \.self) { number in
                        HStack {
                            Text("\(number)")
                            Spacer()
                        }
                    }
                    Spacer()
                }
                Spacer()
            }
            Spacer()
        }
    }
    

    【讨论】:

    • 这解决了我的问题,谢谢。我刚开始使用 SwiftUI,有些错误很奇怪。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-22
    • 2013-12-08
    • 1970-01-01
    • 2023-04-10
    • 2020-12-16
    • 2020-08-09
    • 1970-01-01
    相关资源
    最近更新 更多