SwiftUI 选择器分隔符

Posted

技术标签:

【中文标题】SwiftUI 选择器分隔符【英文标题】:SwiftUI Picker Separators 【发布时间】:2020-07-22 15:11:09 【问题描述】:

我正在尝试在 MacOS 中创建一个 SwiftUI 选择器,它看起来像 Xcode 或其他 Mac 应用程序中的选择器。更具体地说,我正在尝试在选择器中的元素之间添加分隔线。

像这些:

我尝试了几个选项,但找不到添加这些分隔符的方法。

选择器示例代码:

    Picker("Pick an option", selection: $selection) 
        Text("Option 1").tag(0)
        Text("Option 2").tag(1)
        Text("Option 3").tag(2)
    

非常感谢您的帮助。

【问题讨论】:

【参考方案1】:

这是一个可能的技巧(不能将其命名为解决方案,而是解决方法)

使用 Xcode 11.4 / macOS 10.15.5 测试

Picker("Pick an option", selection: $selection) 
    Text("Option 1").tag(0)
    VStack Divider().padding(.leading)
    Text("Option 2").tag(1)
    Text("Option 3").tag(2)

注意:VStack 需要使Divider 水平,否则由于某些Apple-ty 原因是垂直的。

【讨论】:

感谢您的回答!我试过了,但 Divider 视图也是选项列表的一部分,您可以选择它。 (我不想要那种行为) 你标记了吗?当我测试它时它是不可选择的。 不,我只标记了可选择的项目,但我对select 的意思是你悬停该项目将突出显示,如果你点击它,它将不会被选中,但弹出窗口会消失。在 Xcode 的控件中(如屏幕截图中),悬停和单击操作被忽略。 只需使用Divider() 而不是VStack Divider().padding(.leading)。分隔线不再是垂直的,将无法选择。

以上是关于SwiftUI 选择器分隔符的主要内容,如果未能解决你的问题,请参考以下文章

SwiftUI - 选择器

来自先前选择器的选择器值 - CoreData/SwiftUI

选择器(SegmentedPickerStyle)中的选择效果不佳 - SwiftUI

如何让 SwiftUI 中的选择器输出选择的值?

SwiftUI - 键盘启动后选择时选择器冻结

从选择器 SwiftUI 中读取选择