【问题标题】:How to create a simple Binding for previews如何为预览创建一个简单的绑定
【发布时间】:2019-10-22 10:17:38
【问题描述】:

有了新的@Binding 委托和预览,我发现总是必须创建@State static var 来创建必要的绑定有点尴尬:

struct TestView: View {
    @Binding var someProperty: Double
    var body: some View {
        //...
    }
}

#if DEBUG
struct TestView_Previews : PreviewProvider {
    @State static var someProperty = 0.7
    static var previews: some View {
        TestView(someProperty: $someProperty)
    }
}
#endif

有没有更简单的方法来创建绑定,代理一个用于测试和预览的简单值?

【问题讨论】:

    标签: swiftui


    【解决方案1】:

    您可以在预览中使用.constant(VALUE),无需创建@State

    /// A value and a means to mutate it.
    @propertyWrapper public struct Binding<Value> {
    
        /// Creates a binding with an immutable `value`.
        public static func constant(_ value: Value) -> Binding<Value>
    }
    

    例如

    TestView(someProperty: .constant(5.0))
    

    【讨论】:

    • 给出的答案是正确的;我不想暗示其他。但我认为正在开发的视图首先具有@Binding 的原因是因为该视图会改变该数据,并且在实时预览中对其进行测试会很好。这对于给定的答案是不可能的,因为.constant() 的结果是一个不可变的绑定。从 16:43 开始,WWDC 2020 演讲“为 SwiftUI 预览构建你的应用程序”(developer.apple.com/videos/play/wwdc2020/10149) 中给出了让它改变的方法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多