.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)
}
我认为这可能是一个错误。
解决方法是在 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
}
}
}