---
title: UIAction
framework: uikit
role: symbol
role_heading: Class
path: uikit/uiaction
---

# UIAction

A menu element that performs its action in a closure.

## Declaration

```swift
@MainActor class UIAction
```

## Overview

Overview Create a UIAction object when you want a menu element that performs its action in a closure. The following example adds an action-based menu to the File menu: // Create a closure-based action to use as a menu element. let refreshAction = UIAction(title: "Refresh") { (action) in     print("Refresh the data.") }

// Use the .displayInline option to avoid displaying the menu as a submenu, // and to separate it from the other menu elements using a line separator. let refreshMenuItem = UIMenu(title: "", options: .displayInline, children: [refreshAction])

// Insert the menu into the File menu before the Close menu. builder.insertSibling(refreshMenuItem, beforeMenu: .close)

## Topics

### Creating an action

- [init(title:subtitle:image:identifier:discoverabilityTitle:attributes:state:handler:)](uikit/uiaction/init(title:subtitle:image:identifier:discoverabilitytitle:attributes:state:handler:).md)
- [init(title:image:identifier:discoverabilityTitle:attributes:state:handler:)](uikit/uiaction/init(title:image:identifier:discoverabilitytitle:attributes:state:handler:).md)
- [captureTextFromCamera(responder:identifier:)](uikit/uiaction/capturetextfromcamera(responder:identifier:).md)
- [UIAction.Identifier](uikit/uiaction/identifier-swift.struct.md)
- [UIActionHandler](uikit/uiactionhandler.md)

### Getting information about the action

- [title](uikit/uiaction/title.md)
- [image](uikit/uiaction/image.md)
- [identifier](uikit/uiaction/identifier-swift.property.md)
- [discoverabilityTitle](uikit/uiaction/discoverabilitytitle.md)
- [attributes](uikit/uiaction/attributes.md)
- [state](uikit/uiaction/state.md)
- [sender](uikit/uiaction/sender.md)

### Initializers

- [init(title:subtitle:image:selectedImage:identifier:discoverabilityTitle:attributes:state:handler:)](uikit/uiaction/init(title:subtitle:image:selectedimage:identifier:discoverabilitytitle:attributes:state:handler:).md)
- [init(title:subtitle:image:selectedImage:preferredImageVisibility:identifier:discoverabilityTitle:attributes:state:handler:)](uikit/uiaction/init(title:subtitle:image:selectedimage:preferredimagevisibility:identifier:discoverabilitytitle:attributes:state:handler:).md)

## Relationships

### Inherits From

- [UIMenuElement](uikit/uimenuelement.md)

### Inherited By

- [UIWindowScene.ActivationAction](uikit/uiwindowscene/activationaction.md)

### Conforms To

- [CVarArg](swift/cvararg.md)
- [CustomDebugStringConvertible](swift/customdebugstringconvertible.md)
- [CustomStringConvertible](swift/customstringconvertible.md)
- [Equatable](swift/equatable.md)
- [Hashable](swift/hashable.md)
- [NSCoding](foundation/nscoding.md)
- [NSCopying](foundation/nscopying.md)
- [NSObjectProtocol](objectivec/nsobjectprotocol.md)
- [NSSecureCoding](foundation/nssecurecoding.md)
- [Sendable](swift/sendable.md)
- [SendableMetatype](swift/sendablemetatype.md)
- [UIAccessibilityIdentification](uikit/uiaccessibilityidentification.md)
- [UIMenuLeaf](uikit/uimenuleaf.md)

## See Also

### Menu elements and keyboard shortcuts

- [Adding menus and shortcuts to the menu bar and user interface](uikit/adding-menus-and-shortcuts-to-the-menu-bar-and-user-interface.md)
- [Adopting menus and UIActions in your user interface](uikit/adopting-menus-and-uiactions-in-your-user-interface.md)
- [UIMenuElement](uikit/uimenuelement.md)
- [UICommand](uikit/uicommand.md)
- [UIKeyCommand](uikit/uikeycommand.md)
- [UIDeferredMenuElement](uikit/uideferredmenuelement.md)
- [UIDeferredMenuElement.Provider](uikit/uideferredmenuelement/provider.md)
- [UIMenuElement.Attributes](uikit/uimenuelement/attributes.md)
- [UIMenuElement.State](uikit/uimenuelement/state.md)
- [UIMenuLeaf](uikit/uimenuleaf.md)
