- Published on
Adding a TextField to an Alert in SwiftUI
- Authors

- Name
- Mick MacCallum
- @0x7fs
In iOS 16, SwiftUI added the ability to collect user input in an alert. This is a great way to prompt the user for input without having to navigate to a new screen. You can add multiple TextFields, SecureFields, or both in combination with buttons.
For example, we can add a TextField to an alert used to let the user name a file while saving it:
struct ContentView: View {
@State private var fileName = ""
@State private var isAlertPresented = false
var body: some View {
Button("Save file") {
isAlertPresented = true
}
.alert("Enter a file name", isPresented: $isAlertPresented) {
TextField("Input a file name", text: $fileName)
Button("Save") {
print("Saving file named: \(fileName)")
}
} message: {
Text("What would you like to name your new file?")
}
}
}
Since we can add multiple TextFields and SecureFields, we can also add both to the same alert to create a simple login form:
struct ContentView: View {
@State private var username = ""
@State private var password = ""
@State private var isAlertPresented = false
var body: some View {
Button("Login") {
isAlertPresented = true
}
.alert("Login", isPresented: $isAlertPresented) {
TextField("Enter your username", text: $username)
SecureField("Enter your password", text: $password)
Button("Login") {
// Login
}
} message: {
Text("Enter your username and password to login")
}
}
}
Continue Learning
Creating an iMessage-Style Input Accessory View in SwiftUI
Learn how to create a custom input accessory view that stays above the keyboard, similar to iMessage's input bar.
Prevent Drag-to-Dismiss on SwiftUI Sheets
Learn how to prevent users from dismissing modal sheets by swiping down in SwiftUI using interactiveDismissDisabled.
Add Spacing to Toolbars with ToolbarSpacer in SwiftUI
Learn how to use ToolbarSpacer to add fixed and flexible spacing between toolbar items in SwiftUI, new in iOS 26.
