SwiftUI - 带有静态单元格的 QGrid

SwiftUI - QGrid with static cells

我正在使用这个允许网格的 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

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

您不能使用包创建没有数据的网格。如果你看它的代码,只有一个 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()
        }
    }
}