Instance Method インスタンスメソッド

popover(item:attachmentAnchor:arrowEdge:content:)

Presents a popover using the given item as a data source for the popover’s content. ポップオーバーを提示します、与えられた項目をポップオーバーのもつ内容に対するデータソースとして使って。

Declaration 宣言

func popover<Item, Content>(item: Binding<Item?>, attachmentAnchor: PopoverAttachmentAnchor = .rect(.bounds), arrowEdge: Edge = .top, content: @escaping (Item) -> Content) -> some View where Item : Identifiable, Content : View

Parameters パラメータ

item

A binding to an optional source of truth for the popover. ポップオーバーに対するある随意の信頼できる情報源へのあるバインディング。 When item is non-nil, the system passes the contents to the modifier’s closure. You use this content to populate the fields of a popover that you create that the system displays to the user. If item changes, the system dismisses the currently presented popover and replaces it with a new popover using the same process.

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 in macOS. The default is Edge.top. iOS ignores this parameter.

content

A closure returning the content of the popover. ポップオーバーの内容を返しているクロージャ。

Discussion 議論

Use this method when you need to present a popover with content from a custom data source. The example below uses data in the PopoverModel structure to populate the view in the content closure that the popover displays to the user:


struct PopoverExample: View {
    @State var popover: PopoverModel?


    var body: some View {
        Button("Show Popover") {
            popover = PopoverModel(message: "Custom Message")
        }
        .popover(item: $popover) { detail in
            Text("\(detail.message)")
                .padding()
        }
    }
}


struct PopoverModel: Identifiable {
    var id: String { message }
    let message: String
}

A screenshot showing a popover that says Custom Message hovering