【发布时间】:2019-12-20 11:21:44
【问题描述】:
我正在为一个学校项目制作一个应用程序,我试图计算一个人在不同星球上的重量。 ContentView 文件在预览中工作正常,但仅在模拟器/iPhone 中显示 NavigationBar.title。这是代码
import SwiftUI
struct ContentView : View {
var planets: [Planet] = []
var body: some View {
NavigationView {
List(planets) { planet in
PlanetCell(planet: planet)
}
.navigationBarTitle(Text("Sun"))
}
}
}
#if DEBUG
struct ContentView_Previews : PreviewProvider {
static var previews: some View {
ContentView(planets: testData)
}
}
#endif
struct PlanetCell : View {
let planet : Planet
var body: some View {
return NavigationLink(destination: PlanetDetail(planet: planet)){
Text(planet.name)
}
}
}
编辑名为 Planet 的 swift 文件
import Foundation
import SwiftUI
struct Planet : Identifiable {
var id = UUID()
var name: String
var g : Float
var imageName : String { return name }
}
#if DEBUG
let testData = [
Planet(name: "Mercury", g: 3.724),
Planet(name: "Venus", g: 8.918),
Planet(name: "Earth", g: 9.8),
Planet(name: "Mars", g: 3.724),
Planet(name: "Jupiter", g: 22.932),
Planet(name: "Saturn", g: 9.114),
Planet(name: "Uranus", g: 9.016),
Planet(name: "Neptune", g: 10.976)
]
#endif
【问题讨论】:
-
您是否看到一个空的 SwiftUI 列表(表格视图)?或者根本没有表格视图?能发个模拟器截图吗?
-
@F.Jihad imgur.com/gallery/7MV1EsB
-
正如我所料,您的代码正常并显示 UI,但您的 Data 数组为空,这就是它不填充任何数据的原因。您的行星阵列中有 0 个行星
-
我制作了一个名为 Planet 的结构,其中包含数据(显示在预览中)。你能告诉我如何解决这个问题吗?
-
您的示例数据被包裹在
#if DEBUG闭包中,因此它只能在预览中使用
标签: ios swiftui swiftui-list