1

I am trying to get numeric input via the TextField. See related code below. The display does not show the TextField with the grayed out 'item1:'. It shows the initialized value of 0 instead. deleting the 0 does show the TextField prompt. Trying to find out if there is a way show the prompt.

@State var item1 = 0





TextField(" item1:", value: $item1, formatter: numberFormatter )





private let numberFormatter: NumberFormatter = {
    let formatter = NumberFormatter()
    formatter.numberStyle = .decimal
    // formatter.timeStyle = .medium
    return formatter
   }()
sk65plus
  • 159
  • 2
  • 9

1 Answers1

5

Make your item1 an optional int, since SwiftUI doesn't know if the value 0 was already provided by the user or not, thus, it assumes a placeholder is not needed, add a check to unwrap the optional safely.

struct TestNumber: View {
    @State private var myNumber: Int?
    
    var body: some View {
        TextField("Enter a Number", value: $myNumber, formatter: numberFormatter)
            
    }
    
    private let numberFormatter: NumberFormatter = {
        let formatter = NumberFormatter()
        formatter.numberStyle = .decimal
        return formatter
    }()
}
Andy Nadal
  • 362
  • 3
  • 11