我调用详细页面做错了什么?


import SwiftUI

struct SchoolsDetailView: View {

var data: School

var body: some View {
VStack{
Text((data.properties.name)!)
.modifier(CustomTextM(fontName: "OpenSans-Regular", fontSize: 20, fontColor: Color.black))
Spacer()
(Text("(") + Text((data.properties.areaCode)!) + Text(")-") + Text((data.properties.phone)!))
.modifier(CustomTextM(fontName: "OpenSans-Regular", fontSize: 15, fontColor: Color.black))
(Text((data.properties.address)!) + Text(", ") + Text(data.properties.city!) + Text(", ") + Text(data.properties.state!))
.modifier(CustomTextM(fontName: "OpenSans-Regular", fontSize: 15, fontColor: Color.black))
}
}
}
struct SchoolsDetailView_Previews: PreviewProvider {
static var previews: some View {
NavigationStack{
SchoolsDetailView(data: SchoolModel().schools[2])

}

它一直在输出索引之外的数组。如果我执行"SchoolModel().schools.first!",它会打印出"在展开可选值时意外发现nil ">

不知道该怎么称呼它。从列表视图中,它跳转并显示详细信息,但在详细信息页面中,它一直打印出错误。

当想要支持预览和使用不可变数据时,最好将简单类型传递给视图,而不是富模型类型,例如

struct SchoolsDetailView: View {

let name: String
let area: String
let address: String

这允许你简单地做:

struct SchoolsDetailView_Previews: PreviewProvider {
static var previews: some View {
SchoolsDetailView(name: "Test Name", area: "Test Area", address: "Test Address")
}

这增加了body只在实际显示的数据发生变化时才重新计算的效率。而不是当学校的另一个属性发生变化而没有显示时,不必要地重新计算。

观看WWDC 2020为SwiftUI预览构建您的应用程序以获取更多信息,特别是第一个示例"首先,我们将看一个将不可变的简单数据类型传递给视图的示例,该示例不需要更改值。">

相关内容

最新更新