预览 SwiftUI 私有非默认@State

Edw*_*rey 1 swiftui swiftui-previews

SwiftUI 状态属性应声明为 private。这对于从包含视图中封装它们的值很有用,但会阻止预览使用默认初始值设定项设置非默认状态。例如,这不会编译:

struct TemperatureView: View {
    @State private var isHot = false
    
    var body: some View {
        Text(isHot ? "Hot" : "Cold")
    }
}

struct TemperatureView_Previews: PreviewProvider {
    static var previews: some View {
        Group {
            TemperatureView(isHot: true)
            TemperatureView(isHot: false)
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

替换privatefileprivate会导致相同的错误。如何预览私有视图状态?

Chr*_*isR 5

事实上@State你可能想做:

init() {}

fileprivate init(isHot: Bool) {
    self._isHot = State(initialValue: isHot)
}
Run Code Online (Sandbox Code Playgroud)