如何在`List`中使用`.menuOrder(.priority)`

问题描述 投票:0回答:1

.menuOrder(.priority)
是否无法在
List
内工作?它可以正常工作,无需
List
。里面的一个不起作用。

有没有其他方法可以切换顺序或者让

contextMenu
出现在底部?

List {
    Color.gray
        .frame(height: 400)
    Text("Numbers")
        .padding()
        .contextMenu {
            Button("1", action: { })
            Button("2", action: { })
            Button("3", action: { })
            Button("4", action: { })
        }
        .menuOrder(.priority)
}
swift swiftui
1个回答
0
投票

我认为这可能是一个错误。

解决方法是在 contextMenu(forSelectionType:menu:primaryAction:)

 上使用 
List
。这意味着 
List
必须是可选择的,这可能是不可取的。

struct ContentView: View {
    @State var x: Int?
    var body: some View {
        List(selection: $x) {
            Color.gray
                .frame(height: 400)
            Text("Numbers")
                .padding()
                .tag(1)
        }
        .contextMenu(forSelectionType: Int.self) { selection in
            if selection.contains(1) {
                Button("1", action: { })
                Button("2", action: { })
                Button("3", action: { })
                Button("4", action: { })
            }
        }
        .menuOrder(.priority)
        .onChange(of: x) {
            x = nil
        }
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.