【问题标题】:SwiftUI - How can we rebind a binded optional parameter?SwiftUI - 我们如何重新绑定绑定的可选参数?
【发布时间】:2021-04-26 19:18:33
【问题描述】:

我正在创建一个接受可选文本值的文本控件。如果提供了值,我想显示 TextField 控件,否则使用文本控件。你能指导我如何将已经绑定的值重新绑定到文本字段

struct TextBoxControl: View {
    var text : String
    @Binding var value : String?
    
    var body: some View {
        if (value == nil )
        {
            Text(text)
        }
        else
        {
            TextField("Enter value", text: $value!)
        }
    }
}

【问题讨论】:

标签: xcode swiftui


【解决方案1】:

太好了,我找到了解决办法

//'''
struct TextBoxControl: View {
var text : String
//@Binding var value : String?
var value : Binding<String>?


@State var dummyText : String = ""

var body: some View {
    if (value == nil )
    {
        Text(text)
    }
    else
    {
        TextField("Enter value", text: (value!) ?? $dummyText)
    }
}
}
struct TextBoxControlTest: View {
var text : String
@State var txt : String
//var value : Binding<String>?


@State var dummyText : String = ""

var body: some View {
    TextBoxControl(text: "ddd", value: ($txt))
}
}
//'''

【讨论】:

  • 您可以用.constant("") 替换您的$dummyText 以避免仅为此创建@State var dummyText :)
【解决方案2】:

你的情况要简单得多,只是

TextField("Enter value", text: Binding($value)!)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-04
    • 1970-01-01
    • 1970-01-01
    • 2023-03-17
    • 2021-12-06
    相关资源
    最近更新 更多