如何使用 SwiftUI 在 MacOS 上配置多选分段控制

Posted

技术标签:

【中文标题】如何使用 SwiftUI 在 MacOS 上配置多选分段控制【英文标题】:How to configure multi-select Segmented Control on MacOS with SwiftUI 【发布时间】:2020-05-17 00:24:21 【问题描述】:

macOS HIG 建议分段控件可以是多选的: https://developer.apple.com/design/human-interface-guidelines/macos/selectors/segmented-controls/

但是 SwiftUI SegmentedPickerStyle 似乎没有旋钮来配置它。这只是 SwiftUI for macOS 中尚未实现的一个案例吗?

                Picker(selection: self.$pickerSelection, label: Text("")) 
                Text("One").tag(0)
                Text("Two").tag(1)
                Text("Three").tag(2)
                .pickerStyle(SegmentedPickerStyle())

我似乎无法找到此处引用的 SelectionValue 的定义: https://developer.apple.com/documentation/swiftui/picker/3271572-init

这里的选择值可以是数组吗?

【问题讨论】:

SwiftUI 现在不支持,使用 NSSegmentedControl/NSViewRepresentable 【参考方案1】:

在 Asperi 的指导下,我在网上找到了这个并且能够让它发挥作用。使用自定义分段控件。

https://onmyway133.github.io/blog/How-to-make-segmented-control-in-SwiftUI-for-macOS/

需要注意的是,如何将其连接到您的视图很简单,但是添加具有初始状态、标签/图像和闭包作为参数的 init 允许您以编程方式对其进行配置并设置其初始值(如果任何)以及从协调员那里调用更新的位置。

【讨论】:

以上是关于如何使用 SwiftUI 在 MacOS 上配置多选分段控制的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 SwiftUI 在 macOS 上可靠地检索窗口的背景颜色?

如何在 macOS 上检测 SwiftUI 中的键盘事件?

如何在 macOS 上检测 SwiftUI 中的键盘事件?

SwiftUI:如何在 macOS 11 上设置工具栏的标题?

SwiftUI - 如何在 macOS 上隐藏窗口标题

SwiftUI:如何在 macOS 应用程序中实现编辑菜单