Contents

popoverTip(_:isPresented:attachmentAnchor:arrowEdge:action:)

Presents a popover tip on the modified view.

Declaration

@preconcurrency nonisolated func popoverTip(_ tip: (any Tip)?, isPresented: Binding<Bool>? = nil, attachmentAnchor: PopoverAttachmentAnchor = .rect(.bounds), arrowEdge: Edge? = nil, action: @escaping @MainActor @Sendable (Tips.Action) -> Void = { _ in }) -> some View

Parameters

  • tip:

    The tip to display.

  • isPresented:

    A binding that will automatically update to true when a tip is displayed. This value can be changed to temporarily hide or show a currently displayable tip. If this value is nil, the popover will automatically be dismissed based on the tip’s status and display rules.

  • attachmentAnchor:

    The positioning anchor that defines the attachment point of the popover. The default is bounds.

  • arrowEdge:

    The edge of the attachmentAnchor that defines the location of the popover’s arrow. By default, the system will choose the best orientation of the popover’s arrow.

  • action:

    The closure to perform when the user triggers a tip’s action.

Discussion

Use this modifier to present a tip as a popover on an existing view when the tip becomes eligible for display.

struct TrailRow: View {
    let trail: Trail

    var body: some View {
        VStack {
            HStack {
                Text(trail.name)

                Button(action: trail.favorite) {
                    Image(systemName: "star")
                }
            }
        }
        .popoverTip(FavoriteTrailTip(), attachmentAnchor: .point(.center), arrowEdge: .top)
    }
}