Menu in SwiftUI

I believe there’s a component that isn’t utilized often: the Menu, especially on the iPhone. The situation for the iPad, however, is somewhat different. In this post, we’ll take a closer look at this component.

When we select the Menu component from the list of components, the code will look something like this:

Menu("Menu") {
    Text("Menu Item 1")
    Text("Menu Item 2")
    Text("Menu Item 3")
}

It’s a list of elements that aren’t ‘clickable’, but we’re looking for something interactive. In the menu, we can insert any element we desire. In this case, we will add three buttons: the first will allow us to open a Color Picker, while the other two will do nothing.

Menu("Menu") {
      Button(action: {
          presentColorPicker.toggle()
      }) {
         Label(
             title: { Text("Color") },
             icon: { Image(systemName: "eyedropper.full")}
         )
      }
      Button("Option 1") {
                        
      }
      Button("Option 2") {
                        
      }
}

To display:

Now, let’s take a look at the entire code. By selecting a color, the background color of the screen will change.

struct ContentView: View {
    @State var colorSelected = Color.white
    @State var presentColorPicker = false
    var body: some View {
        NavigationStack {
            ZStack {
                Color(colorSelected)
                Image(systemName: "globe")
                    .imageScale(.large)
                    .foregroundStyle(.tint)
            }
            .background(colorSelected)
            .toolbar {
                Menu("Menu") {
                    Button(action: {
                        presentColorPicker.toggle()
                    }) {
                        Label(
                            title: { Text("Color") },
                            icon: { Image(systemName: "eyedropper.full")}
                        )
                    }
                    Button("Option 1") {
                        
                    }
                    Button("Option 2") {
                        
                    }
                }
            }
        }.sheet(isPresented: $presentColorPicker) {
            ColorPicker("Select a Color", selection: $colorSelected)
                .padding()
        }
    }
}

Consider incorporating this component into your next app.

Note: English is not my native language, so I apologize for any errors. I use AI solely to generate the banner of the post; the content is human-generated.

share this post with friends

Picture of Nicola De filippo

Nicola De filippo

I'm a software engineer who adds to the passion for technologies the wisdom and the experience without losing the wonder for the world. I love to create new projects and to help people and teams to improve

Leave a comment

Your email address will not be published. Required fields are marked *

Who I am

I'm a software engineer who adds to the passion for technologies the wisdom and the experience without losing the wonder for the world. I love to create new projects and to help people and teams to improve.

Follow Me Here

Get The Latest Updates

Periodically receive my super contents on coding and programming

join the family;)

Recent Posts