首页 > 解决方案 > SwiftUI 菜单从上到下的顺序因上下文而异?

问题描述

我想我知道这个问题的答案,但我会提出一个问题并给出我的答案,因为这对我来说有点令人费解,我花了一点时间才弄清楚。

我刚刚开始Menu在 SwiftUI 中使用 's。在我第一次使用它们时,我在我的应用程序的导航栏中使用了它们。

            Menu {
                ForEach(pickers, id: \.mediaPickerUIDisplayName) { picker in
                    Button(action: {
                        viewModel.sheetToShow = .picker(picker)
                    }) {
                        Text(picker.mediaPickerUIDisplayName)
                    }.enabled(picker.mediaPickerEnabled)
                }
            } label: {
                SFSymbolIcon(symbol: .plusCircle)
            }

它看起来不错。

在此处输入图像描述

然后,我更改了使用相同代码的上下文。我没有在导航栏中使用它,而是在屏幕中央使用它。相反,我看到:

在此处输入图像描述

令我感到不安的是,列表中项目的从上到下的顺序发生了变化。

标签: swiftswiftuiios14

解决方案


是的。这是我个人认为非常糟糕的“原生”行为。想象一下,您在底部有一个删除按钮,并且突然没有任何警告,仅因为元素已移动到中线上方/下方,因此顺序更改。肌肉记忆会启动,用户会非常困惑。这是一个具有灾难性后果的疏忽。


推荐阅读