An object representing a main or contextual menu system.


@interface UIMenuSystem : NSObject


A menu system groups root menus together. The mainSystem system has only one root menu while the contextSystem system can have multiple root menus, each built in different UIResponder objects like a view controller.

Use UIMenuSystem in your implementation of buildMenuWithBuilder: to isolate changes to a specific system.

override func buildMenu(with builder: UIMenuBuilder) {
    super.buildMenu(with: builder)
    // Ensure that the builder is modifying the menu bar system.
    guard builder.system == UIMenuSystem.main else { return }

    // ...

You can also use a menu system to rebuild or revalidate menus as changes occur in your app. To rebuild a menu, call the setNeedsRebuild method. Call setNeedsRevalidate when you need the menu system to revalidate a menu.

To see an example of using a menu systen, see Adding Menus and Shortcuts to the Menu Bar and User Interface.


Getting a Menu System


The main menu system.


The context menu system.

Rebuilding a Menu System

- setNeedsRebuild

Tells the menu system to rebuild all of its menus.

Revalidating a Menu System

- setNeedsRevalidate

Tells the menu system to validate all of its menus.


Inherits From

See Also

App Menus


A container for grouping related menu elements in an app menu or contextual menu.


An interface for adding and removing menus from a menu system.