0

我正在使用这个允许网格的 SwiftUI 包: https ://github.com/Q-Mobile/QGrid

我试图制作一个没有数据(静态单元格)的简单网格,但出现以下错误。

Xcode 11 测试版 5 卡塔利娜测试版 5

在此处输入图像描述

我的代码:


import QGrid
import SwiftUI

struct GridView: View {
var body: some View {
QGrid(columns: 4, { ProductCell() }
}
}

#if DEBUG
struct GridView_Previews : PreviewProvider {
static var previews: some View {
GridView()
}
}
#endif

为什么我会收到这样的错误?

4

1 回答 1

2

您不能使用该包创建没有数据的网格。如果你看它的代码,只有一个QGrid初始化器,它需要数据。

这是一个最小的例子:

import QGrid
import SwiftUI

struct Item: Identifiable {
    let id = UUID()
    let name: String
}

struct ContentView: View {
    let array = [Item(name: "Name #1"), Item(name: "Name #2"), Item(name: "Name #3"), Item(name: "Name #4"), Item(name: "Name #5")]

    var body: some View {
        QGrid(array, columns: 3) { value in
            MyCell(item: value)
        }
    }
}

struct MyCell: View {
    let item: Item

    var body: some View {
        Text("\(item.name)")
    }
}

您可以在绘制单元格时使用虚假数组并忽略数据。但是你需要那个包吗?另请注意,QGrid 知道要绘制多少个单元格,因为array.count.

这将是一个虚假的数组:

struct Item: Identifiable { let id = UUID() }

struct ContentView: View {
    let array = Array<Item>(repeating: Item(), count: 5)

    var body: some View {
        QGrid(array, columns: 3) { value in
            MyCell()
        }
    }
}
于 2019-08-11T14:09:26.210 回答