toastersocks/MultiPicker
GitHub: toastersocks/MultiPicker
一个 SwiftUI 的 Picker 扩展,支持单选、可选或多选选项。
Stars: 45 | Forks: 12
# MultiPicker
[](https://swiftpackageindex.com/toastersocks/MultiPicker)
[](https://swiftpackageindex.com/toastersocks/MultiPicker)



## 用于从多个选项中进行选择的选择器,或不选择任何选项
SwiftUI 在 iOS 上的 `Picker` 仅允许选择一个选项。如果你需要一个允许选择一个可选值,或者从一个集合中选择多个值的选择器,那就没那么幸运了。MultiPicker 可以做到所有这三种情况!






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, 自定义标签, 选项选择器