A custom parameter attribute that constructs views from closures.


struct ViewBuilder


You typically use ViewBuilder as a parameter attribute for child view-producing closure parameters, allowing those closures to provide multiple child views. For example, the following contextMenu function accepts a closure that produces one or more views via the view builder.

func contextMenu<MenuItems : View>(
        @ViewBuilder menuItems: () -> MenuItems
    ) -> some View

Clients of this function can use multiple-statement closures to provide several child views, as shown in the following example:

myView.contextMenu {
    if isSymbol {
        Text("Jump to Definition")


Building Blocks

static func buildBlock() -> EmptyView

Builds an empty view from a block containing no statements.

static func buildBlock<Content>(Content) -> Content

Passes a single view written as a child view through unmodified.

static func buildIf<Content>(Content?) -> Content?

Provides support for “if” statements in multi-statement closures, producing an optional view that is visible only when the condition evaluates to true.

See Also

Supporting Types

struct LocalizedStringKey

The key used to look up a string in a strings file or strings dictionary file.

protocol ViewModifier

A modifier that you apply to a view or another view modifier, producing a different version of the original value.