SwiftUI создать список - PullRequest
       9

SwiftUI создать список

0 голосов
/ 04 ноября 2019

У меня есть массив данных, и я пытаюсь отобразить его в списке, как в примере с 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, hasVideo: true),
    Room(name: "Dungeon", capacity: 10, hasVideo: true),
]
#endif

Что я здесь не так делаю?

Ответы [ 2 ]

0 голосов
/ 04 ноября 2019

Решение - добавить мои данные в массив rooms. Поскольку я не могу использовать Canvas или Preview [], значит, у меня нет данных, поэтому var rooms: [Room] = [..., ...]

0 голосов
/ 04 ноября 2019

Вы должны использовать ForEach

Как:

List {
  ForEach(rooms, id: \.id) { room in
         //Display rooms
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...