SwiftUI创建列表

我有一个数据数组,我试图在列表中显示它,例如WWDC中的示例 我没有macOS Catalina,但我使用的是模拟器,所以我认为应该没问题。

如果我将List(rooms)替换为List(0..<5),它将起作用,但是当我尝试传递数组时,它将不显示任何内容,仅显示一些空行。

import SwiftUI

struct ContentView: View {
    var rooms: [Room] = []

    var body: some View {
        List(rooms) { room in

            Image(systemName: "photo")

            VStack(alignment: .leading) {
                Text(room.name)
                Text("\(room.capacity) people").font(.subheadline).foregroundColor(.secondary)
            }
        }

    }
}

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

我的数据在这里

import SwiftUI

struct Room: Identifiable {
    var id = UUID()
    var name: String
    var capacity: Int
    var hasVideo: Bool = false
    var imageName: String { return name }
    var thumbnailName: String { return name + "Thumb" }
}

#if DEBUG
let testData = [
    Room(name: "Observation Deck",capacity: 6,hasVideo: true),Room(name: "Executive Suite",capacity: 8,hasVideo: false),Room(name: "Charter Jet",capacity: 16,Room(name: "Dungeon",capacity: 10,]
#endif

我在这里做什么错了?

qq252887487 回答:SwiftUI创建列表

您必须使用ForEach

赞:

List {
  ForEach(rooms,id: \.id) { room in
         //Display rooms
  }
}
,

解决方案是将我的数据添加到rooms数组中。由于我无法使用画布或预览[]表示我没有数据,因此var rooms: [Room] = [...,...]

本文链接:https://www.f2er.com/3166614.html

大家都在问