<!--
{
  "availability" : [
    "iOS: 15.0.0 -",
    "iPadOS: 15.0.0 -",
    "macCatalyst: 15.0.0 -",
    "macOS: 12.0.0 -",
    "tvOS: 15.0.0 -",
    "visionOS: 1.0.0 -",
    "watchOS: 8.0.0 -"
  ],
  "documentType" : "symbol",
  "framework" : "SwiftUI",
  "identifier" : "/documentation/SwiftUI/TextField/init(_:value:format:prompt:)-3fh51",
  "metadataVersion" : "0.1.0",
  "role" : "Initializer",
  "symbol" : {
    "kind" : "Initializer",
    "modules" : [
      "SwiftUI"
    ],
    "preciseIdentifier" : "s:7SwiftUI9TextFieldVA2A0C0VRszrlE_5value6format6promptACyAEGAA18LocalizedStringKeyV_AA7BindingVy11FormatInputQyd__Gqd__AESgtc10Foundation09ParseableL5StyleRd__SS0L6OutputRtd__lufc"
  },
  "title" : "init(_:value:format:prompt:)"
}
-->

# init(_:value:format:prompt:)

Creates a text field that applies a format style to a bound
value, with a label generated from a localized title string.

```
nonisolated init<F>(_ titleKey: LocalizedStringKey, value: Binding<F.FormatInput>, format: F, prompt: Text? = nil) where F : ParseableFormatStyle, F.FormatOutput == String
```

## Parameters

`titleKey`

The title of the text field, describing its purpose.

`value`

The underlying value to edit.

`format`

A format style of type `F` to use when converting between
the string the user edits and the underlying value of type
`F.FormatInput`. If `format` can’t perform the conversion, the text
field leaves `binding.value` unchanged. If the user stops editing
the text in an invalid state, the text field updates the field’s
text to the last known valid value.

`prompt`

A `Text` which provides users with guidance on what to type
into the text field.

## Discussion

Use this initializer to create a text field that binds to a bound
value, using a
<doc://com.apple.documentation/documentation/Foundation/ParseableFormatStyle>
to convert to and from this type. Changes to the bound value update
the string displayed by the text field. Editing the text field
updates the bound value, as long as the format style can parse the
text. If the format style can’t parse the input, the bound value
remains unchanged.

Use the `View/onSubmit(of:_:)` modifier to invoke an action
whenever the user submits this text field.

The following example uses a
<doc://com.apple.documentation/documentation/Swift/Double>
as the bound value, and a
<doc://com.apple.documentation/documentation/Foundation/FloatingPointFormatStyle>
instance to convert to and from a string representation. As the user types, the bound
value updates, which in turn updates three `Text` views that use
different format styles. If the user enters text that doesn’t represent
a valid `Double`, the bound value doesn’t update.

```
@State private var myDouble: Double = 0.673
var body: some View {
    VStack {
        TextField(
            "Double",
            value: $myDouble,
            format: .number
        )
        Text(myDouble, format: .number)
        Text(myDouble, format: .number.precision(.significantDigits(5)))
        Text(myDouble, format: .number.notation(.scientific))
    }
}
```

![A text field with the string 0.673. Below this, three text views](images/com.apple.SwiftUI/TextField-init-format-1@2x.png)

---

Copyright &copy; 2026 Apple Inc. All rights reserved. | [Terms of Use](https://www.apple.com/legal/internet-services/terms/site.html) | [Privacy Policy](https://www.apple.com/privacy/privacy-policy)