如何设置以下按钮项目的排序顺序(忽略和固定)?它没有以菜单列表中的确切排序顺序显示。我认为操作系统本身正在更新排序顺序。有什么选项可以限制相同吗?
结构ContentView:视图{
var body: some View {
Menu {
Button(action: {
self.self.placeOrder()
}) {
HStack {
Text("Ignore")
.multilineTextAlignment(.leading)
Image("Menu_Ignore")
.renderingMode(.original)
}
}
Button(action: {
self.adjustOrder()
}) {
HStack {
Text("Pin")
.multilineTextAlignment(.leading)
Image("Menu_Pin")
.renderingMode(.original)
}
}
} label: {
Label("Options", systemImage: "paperplane")
}
}
func placeOrder() { }
func adjustOrder() { }}
Run Code Online (Sandbox Code Playgroud)
Asp*_*eri 15
现在我们有环境价值来管理这个:
var body: some View {
Menu {
// .. buttons here
}
.environment(\.menuOrder, .fixed) // << here !!
}
Run Code Online (Sandbox Code Playgroud)
正如 Asperi 提到的,在 iOS 16 和 macOS 13 中是可能的 https://developer.apple.com/documentation/swiftui/text/menuorder(_:)
你的代码完全没问题,并且运行完美。您遇到的问题可能与以下事实有关:第一个菜单项始终显示最接近View用户点击以触发Menu. (Menu您的示例中的“标签”)。
因此,如果点击的对象位于屏幕下方,则系统可能会在点击上方而不是下方显示菜单。当它这样做时,它会颠倒顺序。
对于 2 个项目,这可能不清楚Menu(因为如果您颠倒它们,它可能看起来像是顺序的随机更改),但如果您添加更多项目,您会发现顺序保持不变,但整体Menu可能会显示在水龙头下方按正常顺序或按相反顺序按水龙头上方。
| 归档时间: |
|
| 查看次数: |
2626 次 |
| 最近记录: |