如何在 SwiftUI 中使用 Foreach 视图?

Posted

技术标签:

【中文标题】如何在 SwiftUI 中使用 Foreach 视图?【英文标题】:How to use Foreach on view in SwiftUI? 【发布时间】:2020-02-03 04:35:19 【问题描述】:

我正在使用 Xcode 11.3 和 Swift5 开发我的第一个 ios 应用程序。

但我一直在使用 ForEach 视图。

我想使用 Foreach 将某些 struct 放入 ZStack 中,但仍然出现错误。

Error : Unable to infer complex closure return type; add explicit type to disambiguate

我不知道如何解决这个问题。你能帮帮我吗?

/* Struct I want to put in */
struct Verses: Identifiable
    var id: Int
    var verse : Int

/* I want to load all values from struct using foreach in view. */
        ZStack 
            ForEach(controller.verses)  w in              <- Here is where I get error.

                Rectangle()
                    .foregroundColor(Color.white)
                .cornerRadius(28)
                    .opacity(0.4)
                    .offset(x:0, y:68)
                    .frame(width:290, height:280)

                CardView(date: w.date)
                .gesture(DragGesture()
                .onChanged( (value) in
......


【问题讨论】:

能否将 Rectangle 和 CardView 放入另一个名为 Cell 的视图中。然后在 ForEach 中使用 Cell 【参考方案1】:

ForEach 行必须由 single 视图表示,因此您需要类似以下内容(我仍然不确定容器的类型,但仅作为示例)

ForEach(controller.verses)  w in
  ZStack 
    Rectangle()
        .foregroundColor(Color.white)
    .cornerRadius(28)
        .opacity(0.4)
        .offset(x:0, y:68)
        .frame(width:290, height:280)

    CardView(date: w.date)
    .gesture(DragGesture()
    .onChanged( (value) in

    ...
  

【讨论】:

以上是关于如何在 SwiftUI 中使用 Foreach 视图?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 SwiftUI 在 Xcode 中消除 foreach 循环的歧义

如何使用 SwiftUI 使这个 ForEach 函数工作?

如何限制 ForEach 在 SwiftUI 中显示一组项目?

SwiftUI:如何使用 ForEach 循环使用各种代码的各种结构?

Swiftui 如何在 foreach 循环中对整行使用 Tap Gesture

如何在 SwiftUI 中嵌入 ForEach 的 HStack 中设置相对宽度?