<!--
{
  "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/View/confirmationDialog(_:isPresented:titleVisibility:actions:)-46zbb",
  "metadataVersion" : "0.1.0",
  "role" : "Instance Method",
  "symbol" : {
    "kind" : "Instance Method",
    "modules" : [
      "SwiftUI"
    ],
    "preciseIdentifier" : "s:7SwiftUI4ViewPAAE18confirmationDialog_11isPresented15titleVisibility7actionsQrqd___AA7BindingVySbGAA0I0Oqd_0_yXEtSyRd__AaBRd_0_r0_lF"
  },
  "title" : "confirmationDialog(_:isPresented:titleVisibility:actions:)"
}
-->

# confirmationDialog(_:isPresented:titleVisibility:actions:)

Presents a confirmation dialog when a given condition is true, using a
string variable as a title.

```
nonisolated func confirmationDialog<S, A>(_ title: S, isPresented: Binding<Bool>, titleVisibility: Visibility = .automatic, @ContentBuilder actions: () -> A) -> some View where S : StringProtocol, A : View
```

## Parameters

`title`

A text string used as the title of the dialog.

`isPresented`

A binding to a Boolean value that determines whether to
present the dialog. When the user presses or taps the dialog’s
default action button, the system sets this value to `false`,
dismissing the dialog.

`titleVisibility`

The visibility of the dialog’s title. The default
value is `Visibility/automatic`.

`actions`

A `ContentBuilder` returning the dialog’s actions.

## Discussion

In the example below, a button conditionally presents a confirmation
dialog depending upon the value of a bound Boolean variable. When the
Boolean value is set to `true`, the system displays a confirmation
dialog with a cancel action and a destructive action.

```
struct ConfirmEraseItems: View {
    @State private var isShowingDialog = false
    var title: String
    var body: some View {
        Button("Empty Trash") {
            isShowingDialog = true
        }
        .confirmationDialog(
            title,
            isPresented: $isShowingDialog
        ) {
            Button("Empty Trash", role: .destructive) {
                // Handle empty trash action.
            }
            Button("Cancel", role: .cancel) {
                isShowingDialog = false
            }
        }
    }
}
```

All actions in a confirmation dialog will dismiss the dialog after the
action runs. The default button will be shown with greater prominence.
You can influence the default button by assigning it the
`KeyboardShortcut/defaultAction` keyboard shortcut.

The system may reorder the buttons based on their role and prominence.

Dialogs include a standard dismiss action by default. If you provide a
button with a role of `ButtonRole/cancel`, that button takes the place
of the default dismiss action. You don’t have to dismiss the
presentation with the cancel button’s action.

> Note: In regular size classes in iOS, the system renders confirmation
> dialogs as a popover that the user dismisses by tapping anywhere outside
> the popover, rather than displaying the standard dismiss action.

---

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)