NavigationLink 上的菜单不可点击

时间:2021-03-14 11:40:55

标签: swiftui

如何将 Menu 放在 NavigationLink 目的地?当我点击它时,这种方法只打开目的地,而从不打开菜单。

var body: some View {
    NavigationView {
        NavigationLink (
            destination: Text("Hello")
            label: { 
                ZStack(alignment: .topTrailing){
                    Rectangle()
                        .frame(width: 300, height: 100)
                    Menu {
                        Button("Order Now", action: {print("1")})
                        Button("Adjust Order", action: {print("2")})
                    } label: {
                        Label("Options", systemImage: "paperplane")
                    }
                }
            })
            .buttonStyle(PlainButtonStyle()) 
        }
    }

编辑:澄清一下:菜单位于右上角。当我点击这个菜单按钮时,菜单应该会出现。否则,当我点击视图的其余部分时,应该打开 NavigationLink 的目的地

2 个答案:

答案 0 :(得分:1)

好吧..第三次是魅力..他们这么说!

我让它变得比它需要的更难,但这是 Menu 的一个工作示例,我自己从中学到了

    import SwiftUI

struct navViewTest: View {
    var body: some View {
        NavigationView {
         
            VStack {
              Text("Hello World")
            }.navigationBarItems(trailing:
                                    Menu {
                                        Button("Option 1", action: {doSomething() })
                                        Button("Option 2", action: {doSomething() })
                                    } label:  {Text("Menu") }
            )
        }
        }
    private func doSomething() { }
}

struct navViewTest_Previews: PreviewProvider {
    static var previews: some View {
        navViewTest()
    }
}

答案 1 :(得分:0)

我找到了“解决方案”。有点hacky,但到目前为止它有效。我只是将菜单包裹在一个按钮中:

Button(action: {/*do something*/}, label: {
    Menu {
        Button("Option 1", action: {print("1") })
        Button("Option 2", action: {print("2") })
    } label:  {Text("Menu") }
})