首页 > 解决方案 > SwiftUI 的 PreviewProvider 函数导致问题

问题描述

使用 SwiftUI,我已经体验过PreviewProvider几次发布,但还没有想出如何正确处理这个功能。

在这种情况下,我该如何防止出现问题,因为现在,它显然说:

使用未解析的标识符“ShelterDetailedView(shelter:)”

shelterinside ofShelterDetailedView正在由视图的父级转发。我从数据库中获取这些数据。

struct ShelterDetailedView: View {
    var shelter: Shelter

    var body: some View {
        VStack(alignment: .leading, spacing: 0) {
            ScrollView(.horizontal, showsIndicators: true) {
                HStack {
                    Image(shelter.image)
                        .resizable()
                        .frame(width: UIScreen.main.bounds.width, height: 300)
                    Image("pacific")
                        .resizable()
                        .frame(width: UIScreen.main.bounds.width, height: 300)
                }
            }
            HStack {
                Spacer()
                DetailedViewDistance(shelter: shelter)
                Spacer()
            }
            .offset(x: 0, y: -30)
            DetailedViewHeader(shelter: shelter)
            Spacer()
        }
    }

}

struct ShelterDetailedView_Previews: PreviewProvider {
    static var previews: some View {
        ShelterDetailedView(shelter: ??????)
    }
}
class Shelter: Identifiable {

    let id: String
    let title: String
    let image: String
    let available: Bool
    let distance: Double
    let gender: String?

    init?(id: String, title: String, image: String, available: Bool, distance: Double, gender: String?) {

        if id.isEmpty || title.isEmpty || image.isEmpty || distance < 0 {
            return nil
        }

        self.id = id
        self.title = title
        self.image = image
        self.available = available
        self.distance = distance
        self.gender = gender
    }

}

标签: swiftswiftui

解决方案


显式创建一些存根实例:

struct ShelterDetailedView_Previews: PreviewProvider {
    static var previews: some View {
        ShelterDetailedView(shelter: Shelter(... parameters here ...))
    }
}

推荐阅读