如何将上下文菜单应用于SwiftUI列表行中的按钮?

时间:2020-04-14 14:25:04

标签: swift swiftui-list swiftui

当我长按列表行中的按钮时,将显示所有按钮的所有上下文菜单。看起来整个列表行均已选中。如何才能使上下文菜单仅针对按下的按钮显示?

我已经看到this question有点相关,并尝试了BorderlessButtonStyle()。它使行中的单个按钮可以单击,但不能解决上下文菜单问题。我也尝试过使用.onTapGesture()代替Button(),但这也不起作用。

在下面的示例中,我期望在长按按钮1时仅看到按钮1的动作-但也会显示按钮2的动作。 / p>

enter image description here

struct ContentView: View {
    var body: some View {
        List {
            ForEach((1..<3), content: { _ in
                ListButton()
            })
        }
    }
}

struct ListButton: View {
    var body: some View {
        HStack {
            Spacer()

            Button("Button 1") { }
                .buttonStyle(BorderlessButtonStyle())
                .contextMenu(menuItems: {
                    Text("Action for button 1")
                })

            Spacer()

            Button("Button 2") { }
                .buttonStyle(BorderlessButtonStyle())
                .contextMenu(menuItems: {
                    Text("Action for button 2")
                })

            Spacer()
        }
    }
}

0 个答案:

没有答案