SwiftUI:创建下拉菜单

问题描述

HIG Apple writes中:在iOS 14和更高版本中,按钮可以显示一个下拉菜单,其中列出了人们可以选择的项目或动作

这正是我想要的项目。 This picture上有一个带有下拉菜单的“更多”栏按钮,非常适合您的账单。但是,有没有人举过一个例子,说明如何使用SwiftUI从按钮创建下拉菜单(而不是上下文菜单)?

解决方法

您可以简单地使用iOS 14中iOS新增的Menu视图。

它充当按钮,按下后将显示上下文菜单。如果您想要一张图像甚至嵌套不同的视图,可以使用Label,如 文档中的示例。

struct ContentView: View {
    @State var text = "Hello World"
    
    var body: some View {
        NavigationView {
            Text("Hello World")
                .navigationTitle("Hello")
                .navigationBarItems(trailing: {
                    Menu {
                        Button(action: { text = "Hello there" }) {
                            Label("Hello",systemImage: "pencil")
                        }
                    } label: {
                        Image(systemName: "ellipsis.circle")
                    }
                    
                }())
        }
        .navigationViewStyle(StackNavigationViewStyle())
    }
}

一个人可能应该使用navigationBarItems而不是toolbar,但是我发现从Beta 4开始这是非常不可靠的。


An example menu