SwiftUI - 我们如何重新绑定绑定的可选参数?

Posted

技术标签:

【中文标题】SwiftUI - 我们如何重新绑定绑定的可选参数?【英文标题】:SwiftUI - How can we rebind a binded optional parameter? 【发布时间】: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!)
        
    

【问题讨论】:

这能回答你的问题吗? SwiftUI Optional TextField 【参考方案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)!)

【讨论】:

以上是关于SwiftUI - 我们如何重新绑定绑定的可选参数?的主要内容,如果未能解决你的问题,请参考以下文章

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

SwiftUI 中的可选绑定

SwiftUI 中的可选状态或绑定

SwiftUI 文本字段中的可选链接绑定值

如何解开可选的@State以用于调用需要在swiftui中绑定的东西[重复]

如何处理失败的可选绑定