SwiftUI Optional TextField

前端 未结 4 2023
佛祖请我去吃肉
佛祖请我去吃肉 2020-11-29 08:17

Can SwiftUI Text Fields work with optional Bindings? Currently this code:

struct SOTestView : View {
    @State var test: String? = \"Test\"

    var body: s         


        
4条回答
  •  南方客
    南方客 (楼主)
    2020-11-29 08:55

    You can add this operator overload, then it works as naturally as if it wasn't a Binding.

    func ??(lhs: Binding>, rhs: T) -> Binding {
        Binding(
            get: { lhs.wrappedValue ?? rhs },
            set: { lhs.wrappedValue = $0 }
        )
    }
    

    This creates a Binding that returns the left side of the operator's value if it's not nil, otherwise it returns the default value from the right side.

    When setting it only sets lhs value, and ignores anything to do with the right hand side.

    It can be used like this:

    TextField("", text: $test ?? "default value")
    

提交回复
热议问题