Skip to content

A SwiftUI alert with text field(s) for iOS/tvOS 13 and greater.

License

Notifications You must be signed in to change notification settings

sochalewski/TextFieldAlert

Repository files navigation

TextFieldAlert

A SwiftUI alert with text field(s) for iOS 13+ and tvOS 13+.

As Apple is going to introduce text field(s) as an alert actions in iOS 16, this is a good replacement for older versions.

Requirements

  • iOS 13.0+ or tvOS 13.0+
  • Swift 5.1+

Installation

You can add TextFieldAlert to an Xcode project by adding it as a package dependency.

  1. From the File menu, select Add Packages…
  2. Enter https://github.com/sochalewski/TextFieldAlert into the package repository URL text field.
  3. Add the package to your app target.

Usage

TextFieldAlert is exposed through View extension:

func textFieldAlert(
    title: String?,
    message: String?,
    textFields: [TextFieldAlert.TextField],
    actions: [TextFieldAlert.Action],
    isPresented: Binding<Bool>
)

You can use it in your code as follows:

struct ExampleView: View {
    
    @State var isPresented = false
    @State var text1 = ""
    @State var text2 = ""
    
    var body: some View {
        VStack {
            Button {
                isPresented = true
            } label: {
                Text("Alert")
            }
            
            Text(text1)
            Text(text2)
        }
        .textFieldAlert(
            title: "Title",
            message: "Message",
            textFields: [
                .init(text: $text1),
                .init(text: $text2)
            ],
            actions: [
                .init(title: "OK")
            ],
            isPresented: $isPresented
        )
    }
}

More advanced usage (incl. moving the responsibility to a view model, some customization and enabling action buttons conditionally) is available in the Example app.

Author

Piotr Sochalewski, sochalewski.github.io

TextFieldAlert is heavily inspired by tanzolone's answer on StackOverflow.

License

TextFieldAlert is available under the MIT license. See the LICENSE file for more info.

About

A SwiftUI alert with text field(s) for iOS/tvOS 13 and greater.

Topics

Resources

License

Stars

Watchers

Forks

Languages