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

Posted

技术标签:

【中文标题】SwiftUI 绑定默认值(参数标签 \'(wrappedValue:)\' 不匹配任何可用的重载)【英文标题】:SwiftUI Binding default value (Argument labels '(wrappedValue:)' do not match any available overloads)SwiftUI 绑定默认值(参数标签 '(wrappedValue:)' 不匹配任何可用的重载) 【发布时间】:2020-07-09 01:13:53 【问题描述】:

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

struct myStruct 
    var a: Int = 1

var instance1 = myStruct() // instance1.a -> 1 
var instance2 = myStruct(a: 10) // instance2.a -> 10

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

struct MyView: View 
    @Binding var a: Bool = Binding.constant(true)
    var body: some View 
        Text("MyView")
    

Argument labels '(wrappedValue:)' do not match any available overloads

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

struct ContainerView: View 
    @State var hasSet = false
    var body: some View 
        Group 
            MyView(a: $hasSet)
            MyView() // should be equivalent to MyView(a: .constant(true))
        
    

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

【问题讨论】:

【参考方案1】:

这里是

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

    var body: some View 
        Text("MyView")
    

【讨论】:

但是当你使用.constant时,这个值永远不会改变。 @DanielSaidi,PO 并没有要求它可以更改,这是不同的情况。 @Asperi 但是,如果值应该像我的问题***.com/questions/68101919/… 那样可以更改,你知道一些解决方法吗?

以上是关于SwiftUI 绑定默认值(参数标签 '(wrappedValue:)' 不匹配任何可用的重载)的主要内容,如果未能解决你的问题,请参考以下文章

SwiftUI - 绑定到选择器的变量与选择器的选定值不匹配

ggplot2中facet_wrap( )的高阶用法

SwiftUI 中绑定的无关参数

参数 SwiftUI 中的可选绑定

可选字符串数组作为绑定参数 SwiftUI [重复]

如何根据布尔值 (SwiftUI) 更改对象的绑定源?