toastersocks/MultiPicker

GitHub: toastersocks/MultiPicker

一个 SwiftUI 的 Picker 扩展,支持单选、可选或多选选项。

Stars: 45 | Forks: 12

# MultiPicker [![](https://img.shields.io/endpoint?url=https%3A%2F%2Fswiftpackageindex.com%2Fapi%2Fpackages%2Ftoastersocks%2FMultiPicker%2Fbadge%3Ftype%3Dswift-versions)](https://swiftpackageindex.com/toastersocks/MultiPicker) [![](https://img.shields.io/endpoint?url=https%3A%2F%2Fswiftpackageindex.com%2Fapi%2Fpackages%2Ftoastersocks%2FMultiPicker%2Fbadge%3Ftype%3Dplatforms)](https://swiftpackageindex.com/toastersocks/MultiPicker) ![](https://img.shields.io/badge/iOS-16+-blue) ![](https://img.shields.io/badge/visionOS-17+-blue) ![](https://img.shields.io/badge/watchOS-9+-blue) ## 用于从多个选项中进行选择的选择器,或不选择任何选项 SwiftUI 在 iOS 上的 `Picker` 仅允许选择一个选项。如果你需要一个允许选择一个可选值,或者从一个集合中选择多个值的选择器,那就没那么幸运了。MultiPicker 可以做到所有这三种情况! ![导航链接样式,纯文本选项样式,浅色模式,英文](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/c03c0e079e011702.png) ![导航链接样式,富文本选项样式,深色模式,英文](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/41556bb172011703.png) ![导航链接样式,纯文本选项样式,深色模式,葡萄牙语](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/6a17e52c47011703.png) ![导航链接样式,富文本选项样式,深色模式,阿拉伯语](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/897f6a5647011704.png) ![内联样式,前后选择指示器,浅色模式,英文](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/bd143ce75a011705.png) ![内联样式,前后选择指示器,深色模式,阿拉伯语](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/e93d7b7e34011705.png) MultiPicker 尝试使其 API 尽可能接近 SwiftUI 的 `Picker`。 MultiPicker 支持本地化和无障碍功能,并且比 `Picker` 具有更好的默认无障碍支持。 MultiPicker 支持字符串初始化器以及自定义标签视图。 MultiPicker 与 `Picker` 相比有一些补充和不同之处: - 支持通过 `selectionIndicatorPosition(_:)` 修饰符将选择指示器(对勾标记)放在选项的前导侧或尾随侧。 - 你可以自定义在 `.navigationLink` 样式下已选选项的表示方式。 - 目前仅支持内联和 navigationLink 样式的选择器。 - 选择器样式使用 `mpPickerStyle(_:)` 修饰符而非 `pickerStyle(_:)` 修饰符进行设置。 - 视图使用 `mpTag(_:)` 修饰符而非 `tag(_:)` 进行标记。 - 推出的选择器列表采用内嵌分组样式而非分组样式,因为我个人觉得这样更好看。 ## 用法 `MultiPicker` 的用法与 `Picker` 非常相似: ``` struct MyView: View { @State private var selection: Set = [] @State private var options: [Model] var body: some View { Form { MultiPicker("Choose something", selection: $selection) { ForEach(options) { option in ModelCell(model: option) .mpTag(option) } } .mpPickerStyle(.navigationLink) } } } ``` 查看[文档](https://swiftpackageindex.com/toastersocks/MultiPicker/documentation/multipicker)以了解更深入的用法。 ## 安装 ### Swift Package Manager #### 通过 Xcode - 选择你的 `.xcproject` 文件 - 在 `PROJECT` 下选择项目 - 选择 `Swift Package` - 点击 `+` 号 - 将此仓库地址 `https://github.com/toastersocks/MultiPicker` 粘贴到文本框中并点击“Next” - 在下一个屏幕上选择你的版本/分支 - 选择你的目标并点击“Finish”
标签:iOS组件, SwiftUI选择器, Swift包管理, Swift开发, UI选择器, visionOS开发, watchOS开发, 亮色模式, 内联样式, 单选选择, 可访问性优化, 多语言, 多选选择, 导航链接样式, 开源库, 搜索引擎爬虫, 无选选择, 暗黑模式, 本地化支持, 样式定制, 检查标记位置, 用户界面组件, 移动应用UI, 自定义标签, 选项选择器