Contents

ViewBuilder

A custom parameter attribute that constructs views from closures.

Declaration

@resultBuilder struct ViewBuilder

Mentioned in

Overview

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 {
    Text("Cut")
    Text("Copy")
    Text("Paste")
    if isSymbol {
        Text("Jump to Definition")
    }
}

Topics

Building content

Conditionally building content

See Also

Creating a view