UPGRADE YOUR SKILLS: Learn advanced Swift and SwiftUI on Hacking with Swift+! >>

Other/custom text input in picker

Forums > SwiftUI

Found this thread https://www.hackingwithswift.com/forums/swiftui/other-custom-text-input-in-picker/7067 and wanted to reply but its already archived, so here my 2cts:

I solved it by putting the TextField and Picker in an HStack and sync them so whenever the user selects a value from the picker, that overwrites the value in the TextField. But if the user changes the TextField value to a custom value, that becomes the valid value.

@State private var exchanges = ["ADD NEW", "FWB", "ABC", "DEF"]
@State private var exchange: String = ""

HStack{
  FormField(fieldName: "Exchange", fieldValue: $exchange).textCase(.uppercase)
    .keyboardType(.default)

  Picker("", selection: $exchange) {
    ForEach(exchanges, id: \.self) {
        Text($0)
    }
  }
  .pickerStyle(.automatic)
  }

2      

Max provides an alternate solution! Nice.

Did you create a custom component named FormField? Tell us more.

  FormField(fieldName: "Exchange", fieldValue: $exchange).textCase(.uppercase)
    .keyboardType(.default)

2      

Yes, sorry missed that one ... :)

The idea was especially for the FormFieldDouble to have one default view for Double types so they all behave consistently and if required I just have to change the formatting in a single spot:

struct FormField: View {
    var fieldName = ""
    @Binding var fieldValue: String

    var body: some View{
        TextField(fieldName, text: $fieldValue)

    }
}

struct FormFieldDouble: View {
    var fieldName = ""
    @Binding var fieldValue: Double

    var body: some View{
        TextField(
            fieldName,
            value: $fieldValue,
            format: .number
        )
    }
}

2      

BUILD THE ULTIMATE PORTFOLIO APP Most Swift tutorials help you solve one specific problem, but in my Ultimate Portfolio App series I show you how to get all the best practices into a single app: architecture, testing, performance, accessibility, localization, project organization, and so much more, all while building a SwiftUI app that works on iOS, macOS and watchOS.

Get it on Hacking with Swift+

Sponsor Hacking with Swift and reach the world's largest Swift community!

Archived topic

This topic has been closed due to inactivity, so you can't reply. Please create a new topic if you need to.

All interactions here are governed by our code of conduct.

 
Unknown user

You are not logged in

Log in or create account
 

Link copied to your pasteboard.