我的LazyVGrid无法显示多于两行

时间:2020-07-02 13:27:34

标签: swiftui lazyvgrid

所以我有这个非常基本的网格。它是5列,应该有3行。 但是我不能让编译器编译多于两行....

编译器抱怨:“在调用中的位置11、12、13、14、15处有额外的参数”

如果我删除文本6到10,它会编译....

代码:

struct ContentView: View {
    var columns = [
        GridItem(spacing: 8, alignment: .leading),
        GridItem(spacing: 8, alignment: .center),
        GridItem(spacing: 8, alignment: .center),
        GridItem(spacing: 8, alignment: .center),
        GridItem(spacing: 8, alignment: .center)
    ]

    var body: some View {
        LazyVGrid(columns: columns, spacing: 8) {
            Text("Buttons").font(.headline)
            Text("resting").font(.subheadline)
            Text("active").font(.subheadline)
            Text("loading").font(.subheadline)
            Text("disabled").font(.subheadline)

            Text("1").font(.headline)
            Text("2").font(.subheadline)
            Text("3").font(.subheadline)
            Text("4").font(.subheadline)
            Text("5").font(.subheadline)

            Text("6").font(.headline)
            Text("7").font(.subheadline)
            Text("8").font(.subheadline)
            Text("9").font(.subheadline)
            Text("10").font(.subheadline)
        }.padding(.horizontal, 10)
    }
}

struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}

1 个答案:

答案 0 :(得分:1)

您已进入ViewBuilder的10个视图限制...因此,当您使用静态内容时,必须将其包装在Group / s中以适应该规则(即不再适用)超过10个视图)

所以,像

var body: some View {
    LazyVGrid(columns: columns, spacing: 8) {
      Group {
        Text("Buttons").font(.headline)
        Text("resting").font(.subheadline)
        Text("active").font(.subheadline)
        Text("loading").font(.subheadline)
        Text("disabled").font(.subheadline)
      }

      Group {
        Text("1").font(.headline)
        Text("2").font(.subheadline)
        Text("3").font(.subheadline)
        Text("4").font(.subheadline)
        Text("5").font(.subheadline)

        Text("6").font(.headline)
        Text("7").font(.subheadline)
        Text("8").font(.subheadline)
        Text("9").font(.subheadline)
        Text("10").font(.subheadline)
      }

      Group {
         ... other code
      }
    }.padding(.horizontal, 10)
}

注意: Group也在视图中,因此最多不应有10个组...但是组可以包含其他组...

但是...当然,以防万一,最好使用动态内容,例如ForEach