SwiftUI 绑定默认值(参数标签 '(wrappedValue:)' 不匹配任何可用的重载)

Lin*_*nus 18 swift swiftui combine

在 Swift 中,您可以在初始化时覆盖的结构上定义默认值:

struct myStruct {
    var a: Int = 1
}
var instance1 = myStruct() // instance1.a -> 1 
var instance2 = myStruct(a: 10) // instance2.a -> 10
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试将其应用于 SwiftUI 视图中的 Bindings 时,出现错误:

struct MyView: View {
    @Binding var a: Bool = Binding.constant(true)
    var body: some View {
        Text("MyView")
    }
}
Run Code Online (Sandbox Code Playgroud)
Argument labels '(wrappedValue:)' do not match any available overloads
Run Code Online (Sandbox Code Playgroud)

我想创建一个默认使用常量布尔值但可以被“真实”绑定覆盖的视图:

Argument labels '(wrappedValue:)' do not match any available overloads
Run Code Online (Sandbox Code Playgroud)

是否可以在 SwiftUI 中为绑定定义这样的默认值?

Asp*_*eri 25

这里是

struct MyView: View {
    @Binding var a: Bool
    init(a: Binding<Bool> = .constant(true)) {
        _a = a
    }

    var body: some View {
        Text("MyView")
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 但是当您使用“.constant”时,该值将永远不会改变。 (5认同)
  • 这有点笨重,因为您需要覆盖 init 方法并添加所有字段 (4认同)