如何在navigationBar上显示未折叠的菜单?

How to display the menu uncollapsed on navigationBar?

提问人:Ariel Antonio Fundora 提问时间:3/10/2023 最后编辑:Ariel Antonio Fundora 更新时间:3/13/2023 访问量:36

问:

我想显示一个具有多个选项的选取器,以选择其中一个选项。我可以做到,但问题是菜单显示折叠。

如何显示菜单显示未折叠?

enter image description here

示例代码:

struct TestingView: View {

enum Options: String, CaseIterable {
    case option1
    case option2
    case option3
}

@State var selectedOrder: Options = .option1

var body: some View {
    NavigationStack{
        VStack {
            Text("Custom Text")
        }
        .toolbar {
            ToolbarItem(placement: .navigationBarTrailing) {
                Menu {
                    Picker("Order by", selection: $selectedOrder) {
                        ForEach(Options.allCases, id: \.self) {
                            Text($0.rawValue)
                        }
                    }
                    .pickerStyle(.menu)
                } label: {
                    Image(systemName: "arrow.up.arrow.down")
                }
            }
        }
    }
}}
swift swiftui 工具栏 swiftui 菜单

评论


答:

0赞 Asad 12/13/2023 #1

当我们在菜单中使用选择器时,它被呈现为子菜单。您可以使用以下代码。复选标记图像的位置无法更改。

.toolbar {
    ToolbarItem(placement: .navigationBarTrailing) {
        Menu {
            ForEach(Options.allCases, id: \.self) { option in
                Button(action: {
                    selectedOrder = option
                }, label: {
                    if selectedOrder == option {
                        Image(systemName: "checkmark")
                    }

                    Text(option.rawValue)
                })
            }
        } label: {
            Image(systemName: "arrow.up.arrow.down")
        }
    }
}

输出: https://i.stack.imgur.com/ydM3S.png