【Swift UI】Menuの使い方!クリックでリスト表示するビュー

この記事からわかること

  • Swift UIMenu構造体使い方
  • 長押しメニュー表示する方法
  • 階層構造でメニューを表示する方法

index

[open]

\ アプリをリリースしました /

みんなの誕生日

友達や家族の誕生日をメモ!通知も届く-みんなの誕生日-

posted withアプリーチ

公式リファレンス:Menu構造体

Menu構造体

Swift UiのMenu構造体は文字を長押しした際に任意のビューメニューを表示できる構造体です。中にはTextだけでなく、Buttonなどを配置できるためそこから任意の処理を実行することも可能です。

【Swift UI】Menuの使い方!クリックでリスト表示するビュー
Menu("Menu") {
    Text("Text1")
    Button { } label: { Text("Button1") }
    Button { } label: { Text("Button2") }
}

またMenu(content: () -> Content, label: () -> Label)形式でアイコンと文字を並べることも可能です。

Menu {
    
} label: {
    Label("iPhone", systemImage: "iphone")

    // or 
    
    Image(systemName: "iphone")
    Text("iPhone")
}

階層構造のメニュー

また入れ子にすることで階層構造になったメニューを実装することも可能です。

Menu("Actions") {
    Button("追加", action: {})
    Button("名前を変更", action: {})
    Button("削除", action: {})
    Menu("コピー") {
        Button("コピー", action: {})
        Button("パスをコピー", action: {})
    }
}
【Swift UI】Menuの使い方!クリックでリスト表示するビュー

長押し時にメニューを表示する

primaryActionに処理を渡すことでクリック時はprimaryAction長押し時にメニューを表示させることが可能です。

Menu {
    Button("Button1", action: { print("Button1") })
    Button("Button2", action: { print("Button2") })
    Button("Button3", action: { print("Button3") })
} label: {
    Label("クリック or 長押ししてね", systemImage: "book")
} primaryAction: {
    print("長押し")
}

Menu構造体ではなくText構造体などからメニューを呼び出す

contextMenuモディファイアを使用することでMenu構造体ではなくText構造体などからメニューを呼び出すことが可能です。

Text("UserName")
.padding()
.contextMenu {
    Button {
        
    } label: {
        Label("BOOK", systemImage: "book")
    }
    Button {
        
    } label: {
        Label("iPhone", systemImage: "iphone")
    }
}
【Swift UI】contextMenu(menuItems:)でビューを長押しでメニュー表示!ListやTextなど

おすすめ記事:【Swift UI】contextMenu(menuItems:)でビューを長押しでメニュー表示!ListやTextなど

まだまだ勉強中ですので間違っている点や至らぬ点がありましたら教えていただけると助かります。

ご覧いただきありがとうございました。

searchbox

スポンサー

ProFile

ame

趣味:読書,プログラミング学習,サイト制作,ブログ

IT嫌いを克服するためにITパスを取得しようと勉強してからサイト制作が趣味に変わりました笑
今はCMSを使わずこのサイトを完全自作でサイト運営中〜

New Article

index