SwiftUI选择器分隔符

5

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

就像这些图片:

example1

example2

我已经尝试了几种方法,但无法找到添加这些分隔线的方法。

Picker示例代码:

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

我很感激你能帮助我进行翻译,以下是需要翻译的内容:

我真的非常感谢您的帮助。

2个回答

5

更新:Xcode 13.4 / macOS 12.4

Picker("Pick an option", selection: $selection) {
    Text("Option 1").tag(0)
    Divider()                // << here !!
    Text("Option 2").tag(1)
    Text("Option 3").tag(2)
}

翻译:

这里有一种可能的技巧(不能称之为解决方案,更像是一个变通方法)

在 Xcode 11.4 / macOS 10.15.5 上进行了测试

demo

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水平,否则由于某种苹果原因它是垂直的。


谢谢你的回答!我尝试过了,但是分隔符视图也是选项列表的一部分,你可以选择它。(我不想要那种行为) - xlsmearlx
你打了标签吗?当我测试的时候,它是不可选的。 - Asperi
不,我只标记了可选择的项目,但我的意思是当你悬停在该项目上时,它会被突出显示,如果你单击它,它将不会被选中,但弹出窗口将消失。在Xcode的控件中(如屏幕截图所示),悬停和单击操作将被忽略。 - xlsmearlx
1
只需使用 Divider() 代替 VStack {Divider().padding(.leading)}。分隔线不再是垂直的,也不可选择。 - Peter Schorn

4

正如 @Peter-schorn 在上面提到的,截至2022年正确的做法是只使用 Divider():

Picker("Pick an option", selection: $selection) {
    Text("Option 1").tag(1)
    Divider()
    Text("Option 2").tag(2)
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接