SwiftUI中的两个ForEach

时间:2019-09-28 13:02:29

标签: swift swiftui swiftui-list

我想在SwiftUI中进行两个循环。例如:

ForEach (chapterData) { chapter in

  ForEach (chapter.line) { line in 

     Text("\(line.text)")
  }
}

sectionData是Chapter([Chapter])的表:

struct Chapter: Codable, Identifiable { 
  let id:Int
  let line:[Line] 
} 

struct Line: Codable, Identifiable {
  let id: Int
  let text: String 
} 

我想获取ChapterData中所有章节的line.text

但是我无法编译这段代码,我认为不可能以此方式做两个ForEach循环。

有人可以帮我吗?

1 个答案:

答案 0 :(得分:2)

我已经更改了您的章节-最好对任何Collection使用复数名称,因为它可以提高代码的可读性:

struct Chapter: Codable, Identifiable {
  let id:Int
  let lines: [Line]
}

您的ForEach语法有问题,您的第二个ForEach应该使用Chapter.lines作为其参数,因为这是实际列表。将外部ForEach包装在VStackList中也很重要。因此,您的视图正文可能如下所示:

var body: some View {
        VStack {
            ForEach(chapterData) { chapter in
                ForEach(chapter.lines) { line in
                    Text(line.text)
                }
            }
        }
    }